为什么在EF4,Linq2SQL或任何其他数据映射技术中支持POCO如此重要?我理解OO意义上的POCO的概念,但是当涉及到ORM时,我还缺少其他东西吗?
编辑:我只是在ORM的上下文中添加我个人的 POCO定义: 它是由开发人员手动编码的类,而不是由ORM映射工具(如Visual Studio的EF4设计器)生成,扩充或注释的类。如果我错了,请纠正我。
答案 0 :(得分:2)
通常您不希望您的代码依赖于某种ORM技术。 POCO最小化了这种依赖性。它只是解耦的一般原则的一个化身。
答案 1 :(得分:2)
“POCO”表示框架对实体对象没有任何不必要或违反直觉的约束 - 不需要使用代码生成器,不需要扩展框架提供的基类,广泛注释属性,或者必须为大多数情况下,编写与总是存储在内存中的类不同的代码。这样可以将数据持久存储在模型类之外,并降低认知开销。
将NHibernate或EF Code First中的POCO定义与Visual Studio为没有Code First的EF生成的代码进行比较,并问自己哪个更喜欢阅读和维护。 (例如,在寻找新的代码库时。)
答案 2 :(得分:0)
实体框架使您可以一起使用自定义数据类 使用您的数据模型而不对数据进行任何修改 上课。
这意味着您可以将“普通旧”CLR对象(POCO)(例如现有域对象)与您的数据模型一起使用。这些POCO数据类映射到数据模型中定义的实体,支持大多数与实体数据模型工具生成的实体类型相同的查询,插入,更新和删除行为。