我正在使用NHibernate从遗留数据库中提取一些数据,我发现有几种情况存在外键,但引用的行已被删除。
当我进行NHibernate映射时(使用Fluent NHibernate,如下所示:
References(d => d.Group)
.WithColumns("groupId", "dataset")
.SetAttribute("lazy", "true");
在加载根对象时,我得到了Group
的一个单元化代理,当我尝试使用它时,后面跟着一个ObjectNotFoundException
。
如果我禁用了延迟加载,那么在加载根目录时我会立即得到一个ObjectNotFoundException
。
因此:有没有办法让NHibernate在加载根目录时使Group
为空?或者,有没有可能以某种方式检查被单一化的代理,以查看它是否会成功加载行?
发布于 2009-03-09 11:42:35
发布于 2009-04-07 19:19:14
您是否验证了您引用的属性仍在延迟加载?为了让NHibernate延迟加载引用,它需要确保引用不为空。当您设置not-found="ignore“时,您间接地告诉NHibernate引用可能不存在,从而阻止not NULL约束有效。在上面描述的情况下,您不会遇到错误,但您可能会观察到一个对数据库的紧急调用,以加载您的组。
发布于 2013-05-08 16:12:28
在我正在开发的应用程序上设置
lazy="proxy"
解决了这个问题。
https://stackoverflow.com/questions/618615
复制相似问题