代码之家  ›  专栏  ›  技术社区  ›  mookid8000

当存在外键但引用的行不存在时,是否可以避免NHibernate.ObjectNotFoundException?

  •  18
  • mookid8000  · 技术社区  · 17 年前

    References(d => d.Group)
        .WithColumns("groupId", "dataset")
        .SetAttribute("lazy", "true");
    

    我有一个统一的代理 Group ObjectNotFoundException 当我尝试使用它时。

    如果我禁用延迟加载,我会得到一个 ObjectNotFoundException 加载根目录时立即执行。

    因此:有没有办法让NHibernate制作 加载根目录时为null?或者是否可以以某种方式检查统一化的代理,以查看它是否能够成功加载行?

    4 回复  |  直到 14 年前
        1
  •  16
  •   mookid8000    17 年前

    我找到了解决办法 here

    .SetAttribute("not-found", "ignore");
    

    到映射。

        2
  •  2
  •   Ben Ben    17 年前

    是否已验证引用的属性仍在延迟加载?为了让NHibernate延迟加载引用,需要确保引用不为NULL。当您设置not found=“ignore”时,您间接地告诉NHibernate有可能引用不存在,从而阻止not NULL约束有效。在上面描述的情况下,您不会遇到错误,但您可能会看到对数据库的紧急调用以加载您的组。

        3
  •  -1
  •   Eugeniu Torica    11 年前

    在我正在使用的应用程序上设置

    lazy="proxy" 
    

    解决了这个问题。