NHibernate-查询错误的列

NHibernate-查询错误的列,第1张

NHibernate-查询错误的列

我在NHibernate用户Google网上论坛上问了同样的问题,有人认为他们已经找到了根本原因(并且还提出了解决方案):

https://groups.google.com/forum/#!topic/nhusers/BZoBoyWQEvs

问题代码在PropertyPath.Equals(PropertyPath)中,该属性试图仅通过使用哈希码来确定相等性。这对于较小的代码库来说效果很好,因为默认的Object.GetHashCode()返回一个顺序的对象索引。但是,在垃圾回收之后,这些索引会在删除最终对象并创建新对象时重新使用…这导致多个对象获得相同的哈希码…一旦启动垃圾回收,属性路径就有机会共享相同的哈希码,这意味着它们最终将为冲突的属性混合其定制器,从而导致错误的列名…

如果要解决此错误,可以修补NH源代码:

如果您拥有自己的NH源副本,则可以通过将NHibernate / Mapping / ByCode /
PropertyPath.cs第66行从以下位置更改来修复该错误:

return hashCode == other.GetHashCode();

到:

return hashCode == other.GetHashCode() && ToString() == other.ToString();

请查看Google网上论坛以获取问题的完整详细信息。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5618447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存