如何使用nhibernate+;你是谁?

如何使用nhibernate+;你是谁?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我通过nhibernate进行查询,从数据库中获取一条记录 var result = session.Query<TableA>().Where(x => x.Id == 10).FirstOrDefault(); result.Where = "hi"; session.Update(result) session.Commit(); var result=session.Query().Where(x=>x.Id==10.FirstOrDefault(); result

我通过nhibernate进行查询,从数据库中获取一条记录

var result  = session.Query<TableA>().Where(x => x.Id == 10).FirstOrDefault();
result.Where = "hi";
session.Update(result)
session.Commit();
var result=session.Query().Where(x=>x.Id==10.FirstOrDefault();
result.Where=“hi”;
会话。更新(结果)
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();
var result=session.Query().Where(x=>x.Id==10.FirstOrDefault();
result.Where=“hi”;
result.TableB=会话.Load(1);
会话。更新(结果)
Commit();
那么它是快乐的


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

将TableB属性映射的更新值设置为false。我不确定如何使用Fluent NHibernate实现这一点,但看起来SetAttribute方法可以为您实现这一点


类似于:.SetAttribute(“更新”、“假”)

将TableB属性映射的更新值设置为false。我不确定如何使用Fluent NHibernate实现这一点,但看起来SetAttribute方法可以为您实现这一点

类似于:.SetAttribute(“更新”、“假”)