fluent nhibernate中的自动保存不起作用
我有个问题。 当我尝试将类型为book的对象插入DB时, 如果作者不存在,它还应该将作者添加到authors表中。 相反,我得到一个错误“未保存对象”,并且该对象尚未保存。 有什么问题吗 守则:fluent nhibernate中的自动保存不起作用,nhibernate,fluent-nhibernate,fluent,Nhibernate,Fluent Nhibernate,Fluent,我有个问题。 当我尝试将类型为book的对象插入DB时, 如果作者不存在,它还应该将作者添加到authors表中。 相反,我得到一个错误“未保存对象”,并且该对象尚未保存。 有什么问题吗 守则: Book: Id(x => x.ID); Map(x => x.Title); References(x => x.Author) .Not.LazyLoad() .
Book:
Id(x => x.ID);
Map(x => x.Title);
References(x => x.Author)
.Not.LazyLoad()
.Column("Author_id");
Author:
Id(x => x.ID);
Map(x => x.FullName);
不要忘记您必须使用
会话。获取
/会话。加载
以获取现有作者映射是什么?从你所说的来看,这似乎是ID映射或其他方面的问题cascade@user1430430您得到该错误是因为数据库中不存在作者。Author实际上是根实体,因此您应该首先保存Author对象。它确实存在于数据库中。如果我手动添加Author,它会起作用,如果我从数据库中获取它,它就有Author对象。该怎么办?不起作用!行被另一个事务更新或删除(或未保存的值映射不正确):[Library.Author#1]我能做什么?您是否使用同一个会话获取作者并保存书籍?当不使用session.Lock时(author,LockMode.None)代码>我是在泛型类型中完成的…所以我无法使用它…可能还有其他选项?所有东西都映射正确。谢谢!!最好的选择是用你用来保存这本书的同一个会话加载它,因为这是工作单元(会话),怎么可能呢?如果程序被关闭…我看到保存程序是自动的,我不能理解
References(x => x.Author)
.Not.LazyLoad()
.Cascade.All() // unsaved Authors should also be saved
.Column("Author_id");