Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么POCO';这对EF4来说是件好事,nHiberate_C#_Entity Framework 4_Poco - Fatal编程技术网

C# 为什么POCO';这对EF4来说是件好事,nHiberate

C# 为什么POCO';这对EF4来说是件好事,nHiberate,c#,entity-framework-4,poco,C#,Entity Framework 4,Poco,为什么在EF4、Linq2SQL或任何其他数据映射技术中支持POCO如此重要?我从OO的角度理解POCO的概念,但在ORM方面,我是否还缺少其他东西 编辑:我只是在ORM的上下文中添加我个人对POCO的定义: 它是由开发人员手工编码的类,而不是由ORM映射工具(如VisualStudio的EF4设计器)生成、扩充或注释的类 如果我错了,请纠正我 通常您不希望您的代码依赖于某种ORM技术。POCO最小化了这种依赖性。这只是解耦的一般原则的一个体现。“POCO”意味着框架不会对实体对象施加不必要或违

为什么在EF4、Linq2SQL或任何其他数据映射技术中支持POCO如此重要?我从OO的角度理解POCO的概念,但在ORM方面,我是否还缺少其他东西

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


如果我错了,请纠正我

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

“POCO”意味着框架不会对实体对象施加不必要或违反直觉的约束–无需使用代码生成器,无需扩展框架提供的基类,大量注释属性,或者在大多数情况下必须,编写与始终存储在内存中的类不同的代码。这样就可以将数据保持在模型类之外,并减少认知开销

将NHibernate或EF Code First中的POCO定义与VisualStudio为EF生成的代码(不含代码)进行比较,问问自己您更喜欢阅读和维护哪一个。(例如,在浏览新的代码库时。)

实体框架使您能够一起使用自定义数据类 使用您的数据模型,而无需对数据进行任何修改 课程本身


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

那么说EF支持POCO是真的吗?是的,如果使用“代码优先”,实体框架支持POCO化身。@在当前代码首次发布之前,StriplingWarrior实体框架支持POCOs。我甚至可以说,就POCO而言,先使用EF代码而不是先使用EF模型并不会带来很多好处。两者同样可行。但是如果你喜欢RAD,完全忘记纯POCO。。。他们需要很多额外的工作和耐心,很好。在使用解耦/可维护的方式和快速/代码生成的方式之间是否存在折衷?在EF-CF中,您通常需要遵守几个最合理的约定,以便“自动”工作。如果您需要对事物进行更多的控制,则必须研究正确的注释以覆盖这些约定。当使用代码生成时,您使用的是可视化设计器,而“属性”面板将向您展示您可以一眼定制的内容,而无需在文档中搜寻,并将杂乱无章的内容重新引入不太简单的COS中。