C# ASP.NET MVC Fluent NHibernate更新记录,无需我显式调用Repository.Update(项)
我在ASP.NET MVC项目中设置了Fluent NHibernate。对于我的大多数记录,我需要显式调用Repository.Update(record),以便将记录实际持久化到数据库中 我在玩弄我的项目,我发现我的一个对象在不调用Update的情况下将其信息持久化到数据库中。我认为这是因为我后来在代码中调用了Update,但事实并非如此。在返回视图之前,我将对象中的一个字段更改了一行 我在更新时设置了一个断点(在返回视图之前的行上),但它从未到达那里。。。如果有区别的话,我确实在大约10行之前显式地调用了Update 我知道这有点模糊,因为涉及到大量的配置和定制。我只是希望能朝着正确的方向或是去哪里看C# ASP.NET MVC Fluent NHibernate更新记录,无需我显式调用Repository.Update(项),c#,asp.net-mvc,nhibernate,fluent-nhibernate,fluent,C#,Asp.net Mvc,Nhibernate,Fluent Nhibernate,Fluent,我在ASP.NET MVC项目中设置了Fluent NHibernate。对于我的大多数记录,我需要显式调用Repository.Update(record),以便将记录实际持久化到数据库中 我在玩弄我的项目,我发现我的一个对象在不调用Update的情况下将其信息持久化到数据库中。我认为这是因为我后来在代码中调用了Update,但事实并非如此。在返回视图之前,我将对象中的一个字段更改了一行 我在更新时设置了一个断点(在返回视图之前的行上),但它从未到达那里。。。如果有区别的话,我确实在大约10行
Player myPlayer = this.PlayerRepository.GetById(id);
myPlayer.Location = "USA";
myPlayer.Age = 19;
this.PlayerRepository.Update(myPlayer);
...
...
...
myPlayer.Name = "John"; //this is being persisted without me actually calling Update
return View;
这很可能是重复的:
- 从Find()或Enumerable()的某些调用
- 来自NHibernate.ITransaction.Commit()的
- 来自ISession.Flush()
- 所有实体插入,使用ISession.Save()以相同的顺序保存相应的对象
- 所有实体更新
- 所有集合删除
- 所有集合元素的删除、更新和插入
- 所有集合插入
- 所有实体删除,按照使用ISession.Delete()删除相应对象的相同顺序
从这几行代码中可以清楚地看出,NHibernate:…ISession将不时执行将ADO.NET连接的状态与内存中保存的对象的状态同步所需的SQL语句…非常感谢!现在,我知道了:D