POCO!=域对象?

Hob*_*bes 6 architecture orm design-patterns domain-driven-design

当我正在使用ORM完成我的第一个大型项目时,我开始意识到ORM将成为创建富有表现力且传达意图的域对象的一大障碍.

也就是说,我知道我们不希望域对象只是公开访问的getter和setter的包.此外,我开始意识到只是在整个地方使用IList <T>并没有传达意图,并且可能会引起使用这些对象的开发人员的滥用.例如,可能最好暴露ReadOnlyCollection <T>.(顺便说一下,我正在使用.NET和Entity Framework.)而不是IList <MyDomainObject>,我发现自己想要公开从MyDomainObject 派生的对象列表.(这些东西在EF中都不容易.也许我需要使用NHibernate或ADO.Net.)

我的问题是:我是否试图以这种方式制作域对象?这些问题是否应该成为其他应用程序组件的一部分?或者我应该有一个"真正的"域对象(具有表达性的东西)和一个由ORM水合的"哑"POCO对象?


(编辑:系统吃了一堆我的尖括号.)

Eri*_*sch 0

没有什么说 POCO 不能包含您自己的复杂对象。POCO 之所以成为 POCO 的原因在于它与数据状态没有链接,而不是它只能包含列表作为对象。