我们正在使用的.net MVC项目中使用Fluent nHibernate存储库模型。在运行sql配置文件以检查改进的区域时,我们注意到一些对象在没有显式Save的情况下获得UPDATEd。有人知道为什么nHibernate会在我选择它时选择更新对象吗?
班级:
public class Request : DomainEntity
{
public virtual string Code { get; set; }
public virtual string PartCode { get; set; }
public virtual string Description { get; set; }
public virtual int Quantity { get; set; }
public virtual decimal Price { get; set; }
public virtual DateTime DateRecieved { get; set; }
}
样本用法:
var request = _repository.Query<Request>().Where(x => x.OemCode == "TEST").FirstOrDefault();
使用不同的请求代码运行此代码后,我们的跟踪通常会找到似乎是随机更新的内容。有什么想法吗?
答案 0 :(得分:2)
来自HNhibernate documentation:
ISession会不时地 执行所需的SQL语句 同步ADO.NET连接 持有对象状态的状态 在记忆中。发生此过程,冲洗 默认情况下,在以下几点
- 来自Find()或Enumerable()
的一些调用- 来自NHibernate.ITransaction.Commit()
- 来自ISession.Flush()
您可以通过设置ISession.FlushMode
属性来覆盖此行为。