gpt4 book ai didi

NHibernate、DTO 和 NonUniqueObjectException

转载 作者:行者123 更新时间:2023-12-04 01:44:46 26 4
gpt4 key购买 nike

我们使用 DTO 模式将我们的域对象从服务层编码到我们的存储库,然后通过 NHibernate 向下编码到数据库。

我遇到了一个问题,我从存储库中提取了一个 DTO(例如 CustomerDTO),然后将其转换为服务层中的域对象(客户)。然后我尝试保存一个包含相同客户对象的新对象(例如 SalesOrder)。这又被转换为 SalesOrderDTO(和 CustomerDTO)以推送到存储库。

NHibernate 不喜欢这样——它提示 CustomerDTO 是重复记录。我假设这是因为它在同一个 session 中取出了第一个 CustomerDTO,并且因为返回已经来回转换它无法将其识别为同一个对象。

我是被困在这里还是有办法解决这个问题?

谢谢

詹姆斯

最佳答案

您可以使用 Lock 将对象重新附加到 NHibernate 中的 session ,例如

_session.Lock(myDetachedObject, NHibernate.LockMode.None);

这可能有帮助,也可能没有帮助,具体取决于这里发生的事情。附带说明一下,将 DTO 与 NHibernate 一起使用并不是最常见的做法,NHibernate(主要)支持持久性无知这一事实意味着通常 DTO 不像其他一些 ORM 框架那样广泛使用。

关于NHibernate、DTO 和 NonUniqueObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/862097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com