我有一个具有非可空属性的对象。
class Notebook {
Blueprint Blueprint { get; set; }
}
// ...
NotebookMap() {
// ...
References(x => x.Blueprint)
.Not.Nullable()
.Cascade.All();
}
好的,太好了。精彩。
如果我想更改附加到笔记本的Blueprint
并删除旧蓝图会怎样?这不起作用..
notebook.Blueprint = // new blueprint code.;
工作正常......但是旧的蓝图不会被删除,它只是在代码中愉快地挂起并浪费空间。
如果我试试这个..
session.Delete(notebook.Blueprint);
我收到错误,因为现在该字段为空(并且必须是非可空的)。
有没有解决这个问题的方法?
答案 0 :(得分:1)
这样的事情怎么样?
var oldBlueprint = notebook.Blueprint;
notebook.Blueprint = // new blueprint code;
session.Flush(); // might or might not be needed
session.Delete(oldBlueprint);
当然,蓝图可能会被另一个笔记本引用,因此删除可能仍会失败。