没有外键的流畅的NHibernate关系

时间:2013-06-30 08:17:22

标签: c# nhibernate fluent-nhibernate

我正在尝试这样简化我的问题,但基本上我正在尝试映射2个实体但是我没有数据库集中的外键,因为列可能为null。当我尝试在父项上插入时,我收到以下错误:

  

对象引用未保存的瞬态实例 - 保存瞬态   刷新之前的实例或为属性设置级联操作   会让它自动保存的东西。

这是我到目前为止所做的:

我的实体

public class DocumentDraft
{
    public virtual Guid Id { get; set; }
    public virtual string Subject { get; set; }
    public virtual string ReferenceNo { get; set;}
    public virtual DocumentType DocumentType { get; set; }
}

public class DocumentType
{
    public virtual short Id { get; set; }
    public virtual string Description { get; set; }
}

映射

public class DocumentDraftMap : ClassMap<DocumentDraft>
{
    public DocumentDraft()
    {
        // other mappings ...
        References(x => x.DocumentType)
            .Columns("DocumentTypeId")
            .Nullable()
            .Not.LazyLoad()
            .NotFound.Ignore(); // <-- added this since the value could be null and it throws an error
    }
}

我尝试在映射中指定Cascade.None(),但我得到了相同的结果。基本上会发生的事情是null值被尝试插入DocumentType,我不想这样(我想在父表中插入null,但我不想触摸子表,我不希望这种级联)。

我也尝试过:.Not.Insert(),但这也不起作用。

如果有人可以帮我解决这个问题,我会很感激。

1 个答案:

答案 0 :(得分:2)

我想保存时属性DocumentType不是真的null。 似乎有一个实例,并且没有Cascade.All()在引用上它无法保存。