0

我正在尝试在这里简化我的问题,但基本上我正在尝试映射 2 个实体,但是我在数据库集中没有外键,因为该列可能为空。当我尝试对父级进行插入时,出现以下错误:

对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例或将属性的级联操作设置为使其自动保存的内容。

这是我到目前为止所拥有的:

我的实体

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(),但这也没有用。

如果有人可以帮助我解决这个问题,我将不胜感激。

4

1 回答 1

2

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

于 2013-07-01T06:03:08.417 回答