ORM框架万万千,一直都使用NHibernate,没用过其他的。最近闲来学习下微软自家的Entity Framework,记录一些我学习过程中遇到的头疼问题。(不断更新中...)
教程:http://www.cnblogs.com/mbailing/tag/Entity%20Framework/
1.如何映射实体的枚举属性?
这跟Entity Framework 4、5或6版本没关系,请把.NET版本换成4.5就可以支持枚举类型了。之前版本想实现枚举属性参考:
http://www.cnblogs.com/ryanding/archive/2010/04/18/1714854.html
http://www.cnblogs.com/snowdream/archive/2010/04/19/use-enum-in-adonet-entity-framework-4.html
2.如何实现属性的唯一键?
目前不支持,只能通过手动实现。参考:
http://stackoverflow.com/questions/5701608/unique-key-with-ef-code-first
3.如何实现实体属性的数据验证?
可以使用partial关键字和MetadataTypeAttribute特性来实现。
using System.ComponentModel.DataAnnotations; // 假设这是由EF自动生成的实体类,我们需要对Name属性进行验证。 // 因为每次修改edmx保存时,该类又被重新生成。那我们写的代码就白费了。 public partial class User { public string Name { get; set; } } // 新建一个User,加上关键字partial和MetadataType特性。 // 利用partial,我们新建的类就会和EF生成的类合并。我们可以在这个类里做任何事都不会白费了。 [MetadataType(typeof(UserMetadata))] public partial class User { } // 建一个元数据,对Name属性进行验证。属性名必须一致。 internal class UserMetadata { [RegularExpression("^([u4E00-u9FA5]|[uFE30-uFFA0]|[a-zA-Z0-9_]){3,12}$")] public string Name { get; set; } }