为什么POCO与EF4,nHiberate相关是一件好事

时间:2011-10-22 22:57:04

标签: c# entity-framework-4 poco

为什么在EF4,Linq2SQL或任何其他数据映射技术中支持POCO如此重要?我理解OO意义上的POCO的概念,但是当涉及到ORM时,我还缺少其他东西吗?

编辑:我只是在ORM的上下文中添加我个人的 POCO定义: 它是由开发人员手动编码的类,而不是由ORM映射工具(如Visual Studio的EF4设计器)生成,扩充或注释的类。

如果我错了,请纠正我。

3 个答案:

答案 0 :(得分:2)

通常您不希望您的代码依赖于某种ORM技术。 POCO最小化了这种依赖性。它只是解耦的一般原则的一个化身。

答案 1 :(得分:2)

“POCO”表示框架对实体对象没有任何不必要或违反直觉的约束 - 不需要使用代码生成器,不需要扩展框架提供的基类,广泛注释属性,或者必须为大多数情况下,编写与总是存储在内存中的类不同的代码。这样可以将数据持久存储在模型类之外,并降低认知开销。

将NHibernate或EF Code First中的POCO定义与Visual Studio为没有Code First的EF生成的代码进行比较,并问自己哪个更喜欢阅读和维护。 (例如,在寻找新的代码库时。)

答案 2 :(得分:0)

  

实体框架使您可以一起使用自定义数据类   使用您的数据模型而不对数据进行任何修改   上课。

这意味着您可以将“普通旧”CLR对象(PO​​CO)(例如现有域对象)与您的数据模型一起使用。这些POCO数据类映射到数据模型中定义的实体,支持大多数与实体数据模型工具生成的实体类型相同的查询,插入,更新和删除行为。