September
13th,
2012
目录
[简介][1]
[配置实体的属性][2]
[配置实体间的引用关系][3]
[配置数据库映射][4]
配置方法介绍
在 Code First 之前,其实大家都知道一种配置方法:
class AnimalType
{
public int Id { get; set; }
[Required]
public string TypeName { get; set; }
}
没错,这就是 Code First 的配置方法之一:Data Annotations
直译叫做数据批注,原理就是在对应的字段上加上 System.ComponentModel.DataAnnotations
命名空间下的一些 Attribute,就可以实现各种配置了。
这种作法在 Model First 和 Database First 的时代就有了,也可以同时被用来做 MVC 的数据验证。
另外一种配置方法叫做:Fluent API
这个实在不好翻译,我更喜欢称呼它的原名。
示例如下:
class VetContext:DbContext
{
public DbSet<Patient> Patients { get; set; }
public DbSet<Visit> Visits { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AnimalType>()
.ToTable("Species");
modelBuilder.Entity<AnimalType>()
.Property(p => p.TypeName).IsRequired();
}
}
那最终到底选择哪种呢?
个人建议还是选择 Fluent API。
因为它提供的功能更多;而且它可以完全脱离 Model,便于分层,EF 是仓促层的东西,尽量不要入侵 Model。
所以它非常适合 DDD,这里有一位高人的实例程序,非常的棒:传送门
属性长度
Convention | max (type specified by database) | ||||||||||||||||||||||||||||||||||||||||||||||||
Data Annotation |
MinLength(nn) MaxLength(nn) StringLength(nn) |
||||||||||||||||||||||||||||||||||||||||||||||||
Fluent |
Entity
|
本作品由 Dozer 创作,采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。