gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:14:50 24 4
gpt4 key购买 nike

目前我正在使用单独的配置文件并像这样调用它们:

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:用于无法使用数据注释定义的高级映射方案。例如 here .

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

关于c# - 在 EF4.1 代码优先中,使用注释、配置文件或在 OnModelCreating 中配置实体之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com