在使用实体框架时,我已经阅读了几篇关于外键与独立关系概念的文章和问题。而且我仍然不能 100% 确定要走哪条路……我不希望通过拥有一个将在 FK 关系中使用的属性来“污染”我的域 POCO,因为我已经有一个属性引用“有一个”目的。
我的问题是(看着你@EFTeam,@Ladislav Mrnka)
- 在即将发布的 Entity Framework v5 中对此主题是否有任何改进?
- 如果我使用 FK 而不是独立关联(尤其是代码优先),是否有更多优势?
如果您有一个大型模型,那么无论如何您都必然会“污染”您的域对象(或一般的概念模型)。对于具有 FK 映射关联的模型,“视图生成”的成本 - EF 处理管道中执行查询或保存更改所必需的阶段,可以移动到构建时(“预生成视图”)的成本是与具有独立关联的模型相比较低。这一点很重要,因为对于小型模型来说执行它的时间可能并不明显,但它会变得非常快,尤其是当关联映射到可空外键时(to-0..1 或 to-1 与派生实体在 TPH 映射的层次结构中)。在官方EF5 性能注意事项文档中一个非常大的模型的视图生成时间的示例差异在“超过一个月然后我们放弃”(使用独立关联)和 104 分钟(使用 FK 映射关联)之间给出。在我的情况下(数百个高度连接的实体),它在 25 分钟到 40 秒之间。EF5 中的情况与以前版本中的情况相同。
没有任何改进。这两种选择仍然存在。使用 FK 关联的优点是在使用断开连接的对象图时简化了一对多关系更改的处理。如果您使用它,它还应该简化数据绑定。