2012-06-19 67 views
6

关于使用实体框架时外键与独立关系的概念,我已阅读several文章和questions。 而我仍然不是100%肯定要走哪条路...... 我不希望通过拥有将用于FK关系的属性来“污染”我的域POCO,因为我已经拥有属性引用“has一个“对象。外键与独立关系 - 实体框架5有改进吗?

我的问题是(看你@EFTeam,@Ladislav Mrnka)

  1. 是否有关于这个问题在即将到来的实体 框架V5任何改进?
  2. 如果我使用FK而不是独立关联(特别是在代码优先的情况下)有更多优点吗?

回答

5

如果你有一个大型模型,无论如何你必然会“污染”你的领域对象(或概念模型)。对于具有FK映射关联的模型,“视图生成”的成本 - 执行查询或保存更改所需的EF处理管道中的一个阶段,可以移至构建时间(“预生成视图”)的阶段是与具有独立协会的模型相比较低。这很重要,因为执行它的时间量对于小型模型可能并不明显,但它会变得非常快,尤其是当存在关联映射到可空的外键(0到1或带有派生实体的1到1在TPH映射分层结构中)。在官方EF5 performance considerations document中,给出了一个非常大型模型的视图生成时间差异的示例,其中“超过一个月,然后我们放弃了”(具有独立关联)和104分钟(使用FK映射的关联)。在我的情况下(数百高度连接的实体),它在25分钟到40秒之间。 EF5的情况与之前的版本相同。

+0

我也有一个非常大的模型(超过75个实体)。看起来建议使用FK关系呢? – zam6ak

+0

如果你还没有看到性能问题(特别是,首先''.SaveChanges'长时间等待,并且第一次查询访问给定实体集时略有延迟),如果你喜欢更干净的独立于代码的关联,则不需要使用FK给更多。 – cynic

2

没有任何改进。这两个选项仍然存在。使用FK关联的优点是在处理断开的对象图时简化了一对多关系中的更改处理。如果你使用它,它也应该简化数据绑定。

+1

看起来FK关系以域POCO的“污染”为代价提供了更多优势......您能否详细说明“如果您使用它,它也应该简化数据绑定”。你是什​​么意思 - 是否有一个例子(我是一个“视觉”人)?谢谢 – zam6ak