好点了吗?我听说了 CodeFirst 扩展,但它准备好迎接黄金时段了吗?请分享您在开发、任何性能开销等方面的经验。
问问题
660 次
2 回答
6
我认为这是一个及时的问题,因为我想知道完全相同的事情。我正在尝试创建一个严肃的电子商务模型,并且我正在尝试使我的 POCO 没有持久性问题,并尝试忠于领域驱动设计。到目前为止,我非常谨慎,我对是否应该跳槽到 NHibernate 犹豫不决。唯一阻止我这样做的是我认为微软会改进(而且很快)。
迄今为止最大的一些问题:
- 无法精细控制对象物化。EF 调用 POCO 上的零参数构造函数,这是您无法更改的行为。
- 没有枚举支持。社区一直在尖叫——尖叫!——为此,并没有发生。变通方法很糟糕,并且会污染您的域模型。
- 尝试控制数据库中的列名和关系时出现奇怪的映射错误。我能想到的主要是复合键和多对多关系。这些可以解决,我认为这些将在发布时间修复,但它们仍然令人沮丧。
- 糟糕的 SQL。我也做 DBA 工作,EF 生成的 SQL(有或没有 Code-First)非常糟糕。
这只是冰山一角:我才刚刚开始学习 EF4,而且遇到了可怕的障碍。当我想到更多原因时,我将在此处添加它们。我仍在努力克服它。
(我想知道社区是否会给它另一张“不信任”的投票。)
更多的:
- 添加到“奇怪的映射错误”问题:如果列参与自引用关系(例如,如果您有层次结构),则无法控制列的名称。我认为这将在最终版本中修复。
- 缺少批处理,导致多次往返数据库。例如,如何从集合中删除一堆项目? 将所有实体加载到内存中,一次删除一个。 较小的抱怨是插入参与继承关系的表时的 DB 命中数。
- 没有智能的方法来处理模型的变化。如果需要更改架构,EF Code-First 喜欢完全删除整个数据库。
- 很少有可扩展点。一方面,您可以从字面上计算 EF4 允许您订阅的事件数量(而 Code-First 并没有提供更多)。
于 2011-01-31T04:02:46.700 回答
0
至于我 - 我更喜欢 EF,但有一些改进。基本上,EF 为您提供以下优势:
- 可视化模型编辑器
- 数据库/模型更新向导(而不是手动 XML 更改 - 这对我来说很糟糕)
此外,我正在使用基于 EF 和 L2S ( LinqConnect ) 的第 3 方商业工具,它们为我提供以下功能:
- 地理支持
- 优化的 SQL 生成
- 产品绝对集成到 Visual Studio
- 智能数据库更新向导(同步模式)
于 2011-02-02T16:51:39.540 回答