为什么我的Fluent nHibernate存储库(随机)更新我的域实体?

时间:2009-11-04 20:55:56

标签: .net sql model-view-controller fluent-nhibernate

我们正在使用的.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();

使用不同的请求代码运行此代码后,我们的跟踪通常会找到似乎是随机更新的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

来自HNhibernate documentation

  

ISession会不时地   执行所需的SQL语句   同步ADO.NET连接   持有对象状态的状态   在记忆中。发生此过程,冲洗   默认情况下,在以下几点

     
      
  • 来自Find()或Enumerable()
  • 的一些调用   
  • 来自NHibernate.ITransaction.Commit()
  •   
  • 来自ISession.Flush()
  •   

您可以通过设置ISession.FlushMode属性来覆盖此行为。