NHibernate中的对象身份问题是什么?

时间:2010-05-02 08:33:57

标签: c# .net nhibernate

NHibernate中对象识别问题的含义是什么?

2 个答案:

答案 0 :(得分:2)

对象标识问题是没有完美的(也就是100%精确的)方法来确保普通CLR对象的对象标识与NHibernate中的对象标识具有1:1的映射。

原因是一种情况下的对象标识(CLR)由对象指针定义,另一种情况下由对象标识由数据库ID值定义。

因此,可能无法完全可靠地将CLR对象映射到NHibernate对象。

BTW:这对NHibernate来说并不特别,但对任何对象关系映射器都适用。

答案 1 :(得分:1)

对象标识问题涉及对象 - 关系不匹配以及对象之间的等价关系可以以不同方式定义的事实。

默认情况下,使用内存中的对象指针定义对象之间的等效性。这意味着在两个不同的会话中使用相同PK加载的两个对象将被视为不同,这有点反直觉。

因此,使用PK来覆盖等价关系似乎很自然,这样可以将两个这样的两个对象视为等价。但是,你如何处理尚未保存但尚未分配PK的对象?现在你可能会开始看到我们遇到的各种问题......

有关详细信息,您可以查看what are best practices to implement equality,其中列出了与此问题相关的各种策略和陷阱。