【问题标题】:Auto save in fluent nhibernate does not work在流畅的休眠中自动保存不起作用
【发布时间】:2012-06-17 16:42:23
【问题描述】:

我有问题。 当我尝试将带有类型 book 的对象插入数据库时​​, 如果作者不存在,它也应该将作者添加到作者表中。 相反,我收到一个错误“未保存的对象”并且该对象尚未保存。 有什么问题?

代码:

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 映射或一些级联的问题
  • @user1430430 您收到该错误是因为数据库中不存在作者。作者是真正的根实体,所以你应该先保存作者对象
  • 它确实存在于数据库中。如果我手动添加作者,它确实有效,如果我从数据库中获取它,它有作者对象。该怎么办?

标签: nhibernate fluent-nhibernate fluent


【解决方案1】:
References(x => x.Author)
    .Not.LazyLoad()
    .Cascade.All()         // unsaved Authors should also be saved
    .Column("Author_id");

别忘了你必须使用session.Get/session.Load 来获取现有作者

【讨论】:

  • 不起作用!行已被另一个事务更新或删除(或未保存的值映射不正确):[Library.Author#1] 我该怎么办?
  • 您是否使用同一个会话来获取作者并保存图书?不使用时session.Lock(author, LockMode.None);
  • 我是用泛型做的……所以我不能用它……也许还有其他选择?evertything 映射正确。谢谢!!
  • 最好的选择是使用保存图书时使用的同一会话来加载它,因为这是 UnitOfWork(session)
  • 这怎么可能?如果程序被关闭......我看到保存应该是自动的,我不明白
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2015-01-30
  • 2011-11-15
  • 1970-01-01
相关资源
最近更新 更多