如何使用nhibernate+;你是谁?
我通过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
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(“更新”、“假”)