相对于依赖性,POCO 的真正含义是什么?
使用 NHibernate;子集合被检索为 NHibernate.Collection.Generic.PersistentGenericBag<>。这就是我在这里所说的“依赖性”的意思;如果我尝试保存/更新一个对象图,DAL 将已经对我尝试保留它的内容和方式有“意见”。
最初,我认为请求 POCO 会对 DAL、存储库、ORM 没有依赖性(不确定从这个角度来看什么是正确的术语)。但是现在我很困惑,因为我在想这可能只是意味着 POCO 类没有持久化方法;检索 POCO 对象图可能仍然带有这种依赖关系?
所以当您谈论 POCO 时,您真正指的是什么? POCO 可以具有这些类型的依赖关系吗?如果可以也可以不,您如何“按名称”区分这些依赖关系?
“没有这种依赖关系”的 POCO 在某些方面看起来更像是 DTO,但可以有行为,所以它毕竟不是 DTO。
此外,只是为了 100% 确定:我假设 DTO 会持续无知并且“没有依赖性”?
也许“依赖”这个词不合适,所以请纠正我。我希望我的问题仍然可以理解。
编辑 1:
经过进一步的思考;也许我认为 ...PersistentGenericBag 带来了一些“依赖性”的假设是错误的(?)可能它只是一种类型,没有什么比这更神奇了。并进一步;对象对 NH 的唯一依赖是通过 ISession,当然,我们可以控制它。那有意义吗?
最佳答案
POCO 是不依赖于框架或任何其他基础设施类的类。好吧,NHibernate 确实使用了 PersistentGenericBag
,但是您的 POCO 将只引用一个 IList
类。
对于您的 POCO,无论此实例是 List
、ReadOnlyList
还是 PersistentGenericBag
,他都会处理它作为一个 IList
但会有其他不由他处理的行为。
顺便说一句,如果您使用注释映射您的领域对象,您就知道它明显依赖于 ORM。
关于c# - POCO;持久性无知和 DAL 依赖项 (NHibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861129/