【问题标题】:When should we use a DbSet with EF Code First我们什么时候应该使用带有 EF Code First 的 DbSet
【发布时间】:2012-11-30 18:27:56
【问题描述】:

正如标题所说,我们什么时候应该为实体声明一个 DbSet 类型的属性,一般准则?

【问题讨论】:

    标签: database entity-framework-4 ef-code-first


    【解决方案1】:

    没有一般准则。 DbSet<YourEntity> 的实例是您加载和持久化给定类型实体的访问点。如果您不公开上下文类型的属性,您仍然可以使用dbContext.Set<YourEntity>() 即时创建它。

    公开和不公开属性的唯一区别在于定义模型期间的实体发现。首次使用 EF 时,它会为已定义的实体构建“模型”。实体是通过以下方式发现的:

    • DbModelBuilder 实例上明确定义的映射
    • DbModelBuilder 实例中显式注册的配置类型
    • DbSet<> 上下文类型中定义的属性
    • 已发现的实体引用的类型

    因此,如果您不使用 DbSet<> 属性,则必须使用其他方法告诉 EF 您的实体。

    【讨论】:

    • 你提到的最后一点让我感到困惑,如果实体可以通过引用发现,那么我们为什么需要将它们放在 DbSet 中。
    • 如果您不使用前两个选项,例如使用按约定映射或通过数据注释进行映射,您始终需要至少告诉 EF 您的根实体,以便它可以通过引用发现其他实体。
    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 2023-04-02
    • 1970-01-01
    • 2011-07-04
    • 2017-09-13
    • 2021-12-29
    • 2011-07-17
    • 2022-01-26
    相关资源
    最近更新 更多