繁体   English   中英

首先在EF4.1代码中,使用注释,配置文件或在OnModelCreating中配置实体之间有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM