DbContext 模型中包含啥?

Posted

技术标签:

【中文标题】DbContext 模型中包含啥?【英文标题】:What is included in DbContext model?DbContext 模型中包含什么? 【发布时间】:2014-07-23 20:02:43 【问题描述】:

说明: 我尝试将某些域段分成不同的DbContexts。

每个都有多个DbSets,但也有一些DbSets 是共享的,例如UserProfile

这种分离的原因是模型生成的速度和简单性(对象中的集合较少,有助于智能感知)。

但是,我不确定生成的模型究竟属于什么。

Q1:模型中是否包含与实体之间存在过渡连接的每个实体,其中 DbSet 存在于 DbContext 中?

Q2:如果是这样,这是否意味着在性能方面将域分成不同的上下文没有任何意义,因为无论如何连接的所有内容都会在模型中结束,无论@ 987654325@s 在DbContext?中注明?

在哪里可以找到有关如何生成模型的更多信息?我读过一本关于 EntityFramework 和 CodeFirst 的书,但找不到具体信息...

【问题讨论】:

【参考方案1】:

回答您的第一个问题:是的,所有关系都被建模,包括两侧的实体,因此通过导航属性连接到包含实体的每个实体也将包含在模型中,无论是否不管有没有,都有DbSet

实体框架不会强制您为所有实体创建DbSets。如果您想“限制”子实体只能通过其父实体访问,这会很方便。

关于你的第二个问题:如果不是属于一个上下文的所有实体都可以通过属于另一个上下文的实体的导航属性访问,那么分离你的上下文可能仍会提高性能。 可能在上下文中明确包含更多 DbSets 也会产生额外的成本。

您可以阅读(部分)Entity Framework 源代码,它是开源的,可通过on CodePlex 获取以了解有关如何构建模型的更多信息。

【讨论】:

以上是关于DbContext 模型中包含啥?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 在应用程序购买中我应该在 _verifyPurchase() 中包含啥

在 C2DM collapse_key 文件中包含啥

如何将多个模型保存到 Db Context (EF)

从迁移中排除 DbContext 以避免 Context-Parameter

3.Context

实体框架 DbContext 过滤的计数查询使用变量非常慢