我通过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的情况下进行更新?
答案 0 :(得分:1)
将TableB属性映射的Update值设置为false。我不确定你是如何使用Fluent NHibernate做的,但看起来SetAttribute方法会为你做这个。
以下内容:.SetAttribute(“update”,“false”);