说明
我尝试将某些域段划分为不同的DbContext
。
每个都有几个DbSet
,但有一些DbSet
是共享的,例如UserProfile
。
这种分离的原因是模型的生成速度和简单性(对象中的集合较少,有助于智能感知)。
但是,我不确定生成的模型到底属于什么。
Q1:模型中是否包含与DbSet存在于DbContext中的实体过渡连接的每个实体?
Q2:如果是这样,那就意味着在性能方面没有任何意义将域分成不同的上下文,因为无论如何,连接的所有内容都会在模型中结束,无论哪个{ {1}}中列出了{1}}?
在哪里可以找到有关如何生成模型的更多信息?我已经阅读了有关EntityFramework和CodeFirst的书籍,但无法找到具体的信息...
答案 0 :(得分:0)
回答第一个问题:是的,所有关系都建模,包括双方的实体,因此通过导航属性连接到包含实体的每个实体也将包含在模型中,无论是否不管是不是DbSet
。
实体框架不会强制您为所有实体创建DbSets
。如果您想“限制”子实体只能通过其父母访问,这可能很方便。
关于第二个问题:如果不是属于一个上下文的所有实体都可以通过属于其他上下文的实体的导航属性访问,则分离您的上下文可能仍会提高性能。 可能与在上下文中明确包含更多DbSets
相关联的额外费用。
您可以阅读(部分)Entity Framework源代码,它是开源的,可用on CodePlex来了解有关如何构建模型的更多信息。