[英]In EF4.1 code first, What is the difference between configuring entities using annotations, configuration files, or in the OnModelCreating?
目前,我正在使用单独的配置文件,并按如下方式调用它们:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ProductConfiguration());
base.OnModelCreating(modelBuilder);
}
似乎大多数在线示例都是非常基础的,因此它们在单个类中定义了它们的模型,DbContext和模型配置。 是否存在性能问题或其他令人信服的原因,使它们彼此使用?
我不知道您所说的“配置文件”到底是什么意思,但实际上,定义模型实际上有三个选择:
约定:创建模型类时,将以EF可以自动检测主键,外键,关系等的方式命名属性。 因此,如果您这样做,则既不需要任何数据注释,也不需要覆盖OnModelCreating
。
数据注释:在您不能或不想遵循约定规则时很有用。 一个例子可能是您有一个现有数据库,其列名与EF的标准命名规则不匹配,例如,如果您有一个键列,其名称被EF识别为键:
public class User { [Key] public int User_Code { get; set; } }
OnModelCreating
Fluent API:适用于无法使用数据注释定义的高级映射方案。 例子在这里 。
对于性能,我相信您使用什么都没有关系。 该方法是口味和模型复杂性的问题。 EF在应用程序实例的生存期内仅创建一次内部模型表示。 (您可以通过在OnModelCreating
设置一个断点来看到这OnModelCreating
:无论您创建新的DbContext
如何,您都只会到达此断点一次。)
不,这只是可读性问题。 随着模型的增长,您可能会在OnModelCreating中获得非常大的配置。 为了使其更具可读性,您将其分解为单独的配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.