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

时间:2011-05-16 21:06:38

标签: c# asp.net entity-framework ef-code-first entity-framework-4.1

目前我正在使用单独的配置文件并将其称为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new ProductConfiguration());
    base.OnModelCreating(modelBuilder);
}

似乎大多数在线示例都是基本的,所以他们在一个类中定义他们的模型,DbContext和模型配置。是否存在性能问题或其他令人信服的理由使用其中一个?

2 个答案:

答案 0 :(得分:3)

我不知道你对“配置文件”的确切含义,但确实有三种选择来定义模型:

  • 约定:创建模型类时,可以通过EF自动检测主键,外键,关系等的方式命名属性。如果这样做,您既不需要任何数据注释也不需要覆盖OnModelCreating

  • 数据注释:当您不能或不想遵守约定规则时很有用。一个示例可能是您的现有数据库的列名称与EF的标准命名规则不匹配,例如,如果您的密钥列的名称不会将EF识别为密钥:

    public class User
    {
        [Key]
        public int User_Code { get; set; }
    }
    
  • OnModelCreating中的Fluent API:对于无法使用数据注释定义的高级映射方案。例如here

对于表演,我相信你使用的并不重要。这种方法是品味和模型复杂性的问题。 EF在应用程序实例的生命周期内仅创建一次内部模型表示。 (您可以通过在OnModelCreating中设置断点来看到这一点:无论您创建新DbContext的频率如何,您都只会到达此断点一次。)

答案 1 :(得分:1)

不,这只是一个可读性的问题。随着模型的增长,您可能会在OnModelCreating中获得非常大的配置。为了使其更具可读性,您可以将其分解为单独的配置。