随笔分类 - ORM

摘要: 修改ParametersHelper类,添加ExpandoObject的类型判断吧,修改后的代码如下:// PetaPoco - A Tiny ORMish thing for your POCO's.// Copyright © 2011-2012 Topten Software. All Rights Reserved. using System;using System.Collections.Generic;using System.Text.RegularExpressions;using System.Text;namespace PetaPoco.Interna阅读全文
posted @ 2013-05-08 11:05 齐师傅 阅读(1354) | 评论 (6) 编辑
摘要: static public object ChangeType(object value, Type type) { if (value == null && type.IsGenericType) return Activator.CreateInstance(type); if (value == null) return null; if (type == value.GetType()) return value; if (type.IsEnum) ...阅读全文
posted @ 2012-07-26 14:38 齐师傅 阅读(10219) | 评论 (3) 编辑
摘要: Brad为我们提供了T4模板,因为公司一直在使用CodeSmith,故为其写了一个CodeSmith的模板,代码如下:<%-- Name:EntityTemplatesAuthor:Qi Fei Description:Generate a entity file in C#--%><%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" Inherits="" Debug="False" Description=&阅读全文
posted @ 2012-06-20 16:42 齐师傅 阅读(2091) | 评论 (0) 编辑
摘要: 因为公司框架中的很多地方用到DataTable,直接将DataTable作为数据源绑定到DataGridView,所以为PetaPoco添加了两个方法,一个是用以填充单个DataTable,一个是用以多结果集时填充DataSet。 #region operation Fill /// <summary> /// 填充一个DataSet /// </summary> /// <param name="ds">引用的DataSet</param> /// <param name="sql">sql语阅读全文
posted @ 2012-06-20 16:39 齐师傅 阅读(2473) | 评论 (1) 编辑
摘要: PetaPoco的映射需要继承IMapper接口,该接口提供了四个方法:TableInfo GetTableInfo(Type pocoType);ColumnInfo GetColumnInfo(PropertyInfo pocoProperty);Func<object, object> GetFromDbConverter(PropertyInfo TargetProperty, Type SourceType);Func<object, object> GetToDbConverter(PropertyInfo SourceProperty);Brad提供了一个阅读全文
posted @ 2012-06-20 16:30 齐师傅 阅读(2352) | 评论 (0) 编辑
摘要: 在PetaPoco中,Brad并没有定义太多Attribute来修饰Models或Fields。这些为数不多的几个Attribute如下:ColumnAttributeExplicitColumnsAttributeIgnoreAttributePrimaryKeyAttributeResultColumnAttributeTableNameAttributeExplicitColumnsAttribute 和 ColumnAttribute使用ExplicitColumnsAttribute修饰的类必须为每一个属性必须使用ColumnAttribute来修饰。例如: [Explicit...阅读全文
posted @ 2012-06-19 16:58 齐师傅 阅读(3000) | 评论 (0) 编辑
摘要: PetaPoco是一款适用于.Net 和Mono的微小、快速、单文件的微型ORM。PetaPoco有以下特色:微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中。工作于严格的没有装饰的Poco类,和几乎全部加了特性的Poco类Insert/Delete/Update/Save and Is...阅读全文
posted @ 2012-06-04 16:52 齐师傅 阅读(32753) | 评论 (8) 编辑
摘要: 对于一个ORM框架,支持事务操作是必须的。EF Code-Frist本身就是支持事务的。我们的每一次SaveChanges就是一个事务操作,只需要在所有更改都完成后,调用这个方法就可以了。如果你不愿意,网上还有人给出了手动的开启事务的代码(我没有测试过):DbConnection con = ((IObjectContextAdapter)ctx).ObjectContext.Connection;con.Open();using (var tran = con.BeginTransaction()){// 这里才是事务中的代码tran.Commit();}con.Close(); 以上都是针阅读全文
posted @ 2012-05-23 16:27 齐师傅 阅读(5853) | 评论 (0) 编辑
摘要: 网上很多的教程都是跟MVC3绑在一起来讲解的,如果我们抛开MVC3,该如何使用呢?首先新建一个控制台应用程序,我们把它命名为:EFCodeFirst-Books第二步,添加EntityFramework的引用。不要说你还不回使用NuGet,如果真的不会就去问度娘。在NuGet 控制台输入Install-Package EntityFramework,NuGet会为我们引用最新发布的EF版本,目前的版本是4.3。第三步,添加实体类。我新建了一个Models文件夹,在里面添加了Book类,类的定义如下:using System;using System.Collections.Generic;us阅读全文
posted @ 2012-05-23 11:02 齐师傅 阅读(2558) | 评论 (0) 编辑
摘要: CodeFirst提供了一种先从代码开始工作,并根据代码直接生成数据库的工作方式。Entity Framework 4.1在你的实体不派生自任何基类、不添加任何特性的时候正常的附加数据库。另外呢,实体的属性也可以添加一些标签,但这些标签不是必须的。下面是一个简单的示例:publicclass Order { publicint OrderID { get; set; } publicstring OrderTitle { get; set; } publicstring CustomerName { get; set; } public DateTime TransactionDate {..阅读全文
posted @ 2011-06-26 15:27 齐师傅 阅读(9563) | 评论 (0) 编辑