代码之家  ›  专栏  ›  技术社区  ›  shanabus

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

  •  1
  • shanabus  · 技术社区  · 15 年前

    我们在我正在研究的.NET MVC项目中使用FluentNHibernate存储库模型。在运行SQL概要文件以检查改进方面时,我们注意到一些对象在没有显式保存的情况下得到了更新。有人知道当我选择一个对象时为什么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 回复  |  直到 15 年前
        1
  •  2
  •   Bryan Menard    15 年前

    从hnhibernate documentation :

    我会不时地 执行所需的SQL语句 同步ADO.NET连接 持有物品的状态 在记忆中。这个过程,冲洗,发生 默认在以下点

    • 从find()或Enumerable()的某些调用中
    • 来自nhibernate.itransaction.commit()。
    • 来自isession.flush()。

    您可以通过设置 ISession.FlushMode 属性。