如何使用nhibernate + fluent nhibernate更新对象?

时间:2011-07-22 21:16:36

标签: nhibernate fluent-nhibernate

我通过nhibernate进行查询以从数据库中获取记录。

var result  = session.Query<TableA>().Where(x => x.Id == 10).FirstOrDefault();
result.Where = "hi";
session.Update(result)
session.Commit();

所以我得到一个结果并更新一个属性并尝试更新然后提交它。这会崩溃,因为我有表B的forigen键(表A可以有一个表B,表B有很多表A)

所以这个引用不能为null。因此,当它尝试进行更新时,它会崩溃。

所以我必须这样做

       var result  = session.Query<TableA>().Where(x => x.Id == 10).FirstOrDefault();
        result.Where = "hi";
        result.TableB = session.Load<TableB>(1);
        session.Update(result)
    session.Commit();

然后很开心。

如何在不加载TableB的情况下进行更新?

1 个答案:

答案 0 :(得分:1)

将TableB属性映射的Update值设置为false。我不确定你是如何使用Fluent NHibernate做的,但看起来SetAttribute方法会为你做这个。

以下内容:.SetAttribute(“update”,“false”);