Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate中的对象标识问题是什么?_C#_.net_Nhibernate - Fatal编程技术网

C# NHibernate中的对象标识问题是什么?

C# NHibernate中的对象标识问题是什么?,c#,.net,nhibernate,C#,.net,Nhibernate,NHibernate中对象标识问题的含义是什么?对象标识问题是,没有完美(即100%精确)的方法来确保普通CLR对象的对象标识与NHibernate中的对象标识具有1:1的映射 原因是一种情况下的对象标识(CLR)由对象指针定义,另一种情况下的对象标识由数据库ID值定义 因此,可能无法完全可靠地将CLR对象映射到NHibernate对象 顺便说一句:这对NHibernate没有什么特别的,但对任何对象关系映射器都适用。对象标识问题处理对象关系不匹配以及对象之间的等价关系可以用不同的方式定义这一事

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

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

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

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


顺便说一句:这对NHibernate没有什么特别的,但对任何对象关系映射器都适用。

对象标识问题处理对象关系不匹配以及对象之间的等价关系可以用不同的方式定义这一事实

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

因此,用PK覆盖等价关系似乎很自然,在某种程度上,这两个对象被认为是等价的。但是,如何处理尚未保存且尚未指定PK的对象呢?现在你可能开始看到我们遇到的各种问题

有关更多详细信息,您可以查看,我在其中列出了与此问题相关的各种策略和陷阱