我的印象是
如果这两个概念的描述(或多或少)正确,为什么有人会用POCO做什么代码而不是EF?
两者都在做POCO,但是第二个人还需要手动进行映射吗?
答案 0 :(得分:3)
当您的映射XML中出现问题时,它真的是一个PITA,可以在xml中进行挖掘,以便进行所需的修复。如果您在某些情况下开始手动编辑xml,设计师也会中断。
现在我不知道细节,但EF1中的设计器不支持所有可用的映射选项。 EF4设计师有一些改进(想到单向关系),但我不确定它是否具有与手动映射功能相同的功能。
答案 1 :(得分:3)
我唯一要补充的是jfar的答案是,只使用Code-only,你就不会拥有来创建映射。
映射可以在大多数情况下按惯例推断。
答案 2 :(得分:1)
关于视图预生成的观点很重要。我没有听说微软有意为代码提供预生成。如果有人知道不同请发帖。
我已经使用了400个表的代码,作为调查是否使用EF4或NHibernate的一部分,并且视图生成有80秒的初始延迟 - 与使用设计器时完全相同,但与设计师一起使用查看预生成是可能的,它将延迟降低到10秒。如果您不喜欢拆分您的模型并且您拥有超过75个表,请不要使用仅限代码。
答案 3 :(得分:0)
我认为Code-Only目前不允许您预生成视图,因此可能会产生性能成本。但是,这可能会在发布之前发生变化。
答案 4 :(得分:0)
其他未提及的是,在使用“仅代码”时,您将获得语法的完整编译时检查。如果您正在使用EDMX的可视化设计器,您将获得一些编译时检查,但它是有限的。对于较大的模型,EDMX非常不合适,手动编写CSDL,SSDL和MSL是使用XML映射管理超大型模型的唯一方法。如果手动管理映射,则不会进行任何编译时检查。
使用“仅代码”,您可以对任何大小的模型进行完整的编译时检查,即使您需要使用数百或数千个实体。它还会减少“混乱”,因为您的最终产品是所有已编译的程序集,而不是程序集和各种xml文件的混合。