强制Orchard存储库插入数据

时间:2018-04-09 14:05:17

标签: c# nhibernate orchardcms

会议开始时

。在调用动作时,我在数据库中插入一些数据,以后可以使用其他操作,一切都很好。

存储库正在获取数据并且一切都很好但是一旦会话终止,数据就不会插入到数据库中,即使会话存在于存储库中也是非常容易地重新获取数据。

如何强制orchard中的存储库插入数据?

1 个答案:

答案 0 :(得分:1)

DB和NHibernate ISession之间的显式同步操作可以通过显式调用强制执行:session.Flush()。文档:

9.6. Flush

小引用:

  

...

     

ISession会不时执行所需的SQL语句   将ADO.NET连接的状态与状态同步   记忆中的物体。默认情况下,此过程为flush   以下几点

     

...

     

除非您明确 Flush() ,否则绝对无法保证Session何时执行ADO.NET调用,只保证执行它们的顺序。但是,NHibernate确保查询方法永远不会返回陈旧数据;他们也不会返回错误的数据。

在orchard中,存储库实现包装了该调用:

Repository.cs,第117行

public virtual void Flush() {
    Session.Flush();
}

因此,我们可以做同样的事情

var repo = ... // get repository
repo.Flush();

将同步应用程序和数据库,即将执行所有INSERT语句。