Entity Framework 5问题集锦

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; }
}

3.如何为DateTime、Guid类型的属性设置默认值?

原文地址:https://www.cnblogs.com/zhujiawei7/p/3416404.html