【问题标题】:How to break the "circular reference" in NHibernate如何打破 NHibernate 中的“循环引用”
【发布时间】:2013-12-17 04:00:34
【问题描述】:

我遇到了同样的问题,如下所示:

NHibernate - not-null property reference a null or transient value

根本原因就像 Alun Harford 所说的那样:“您正在保存整个对象图,而该图是圆形的”。见以下代码

public class ApplyAuthorization : Activity
{
    public virtual ApplyStatus Status { get; set; }
    public virtual void Apply(Launch launch)
    {
        Status = Status ?? new ApplyStatus
        {
            For = this
        };
        Status.Update(launch);
    }
}

所以关系是双向的:ApplyAuthorization -(Status)-> ApplyStatus 和同时 ApplyStatus -(For)-> ApplyAuthorization。

现在我知道原因了,但是如何处理呢?

【问题讨论】:

  • 您的实体 ID 数据库是否已生成?
  • HasOne 也不行。
  • 奇怪!!!无法重现问题。有效???

标签: nhibernate reference circular-reference


【解决方案1】:

我找到了根本原因,但没有深入了解。

References(m => m.For).Not.Nullable();

如果我删除设置 Not.Nullable(),问题就解决了。

但如果 DBA 需要 Not Null 约束,我不知道如何处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2015-10-04
    • 2013-08-31
    相关资源
    最近更新 更多