c# - POCO;持久性无知和 DAL 依赖项 (NHibernate)

标签 c# .net database nhibernate repository

相对于依赖性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,无论此实例是 ListReadOnlyList 还是 PersistentGenericBag,他都会处理它作为一个 IList 但会有其他不由他处理的行为。

顺便说一句,如果您使用注释映射您的领域对象,您就知道它明显依赖于 ORM。

关于c# - POCO;持久性无知和 DAL 依赖项 (NHibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861129/

相关文章:

c# - DNN MVC 模块 PartialView 返回整个页面

c# - 私有(private)在 C++ 和 C# 中意味着不同的东西吗?

c# - 寻找在 C# 中快速读取和搜索文件的方法

c# - 为什么这个程序会出错? `Object synchronization method was called from an unsynchronized block of code`

sql-server - 如何优化SQL表点对点距离数据的读取速度

php - 使用 PHP 从数据库中获取一个变量

c# - Entity Framework : multiple from is generating cross join

.net - 如何使用 `HashAlgorithm.TransformBlock` 的输出参数?

c# - DataGridView 使用 DataSourceNullValue : enter either nothing, 或 nullValue

database - flask create_app 和 setUp unittest