C# 如何使用NHibernate作为ORM实现EntitySetController可查询ODATA并处理事务?

C# 如何使用NHibernate作为ORM实现EntitySetController可查询ODATA并处理事务?,c#,entity-framework,asp.net-mvc-4,nhibernate,odata,C#,Entity Framework,Asp.net Mvc 4,Nhibernate,Odata,我是一名经验丰富的EF开发人员,但对NHibernate来说还是新手 在MVC4项目中,EntitySetController ODATA可查询支持非常容易实现,并且提供了更多的自由度 然而,这是微软的堆栈技术,EF有最好的支持,当我想到用NHibernate替换EF时,我遇到了“所有调用都应该在NHibernate中进行事务处理”的问题 正如ayende的博客:NH教授提醒:不鼓励使用隐式事务 因此,问题是在将EntitySetController与NHibernate一起使用时,如何将查询

我是一名经验丰富的EF开发人员,但对NHibernate来说还是新手

在MVC4项目中,EntitySetController ODATA可查询支持非常容易实现,并且提供了更多的自由度

然而,这是微软的堆栈技术,EF有最好的支持,当我想到用NHibernate替换EF时,我遇到了“所有调用都应该在NHibernate中进行事务处理”的问题

正如ayende的博客:NH教授提醒:不鼓励使用隐式事务

因此,问题是在将EntitySetController与NHibernate一起使用时,如何将查询包装在“事务”中

代码样本和文章等,将不胜感激。
非常感谢

EF隐式处理事务,NHibernate需要显式代码。因此,每个业务操作(例如请求)都将具有

using (var tx = session.BeginTransaction())
{
    // Do something
    tx.Commit();
}

围绕着它。您可以在BeginHandlerRequest、EndHandlerRequest之类的方法中将其作为方面实现,EF隐式处理事务,NHibernate需要显式代码。因此,每个业务操作(例如请求)都将具有

using (var tx = session.BeginTransaction())
{
    // Do something
    tx.Commit();
}

围绕着它。您可以使用(var tx=session.BeginTransaction()){doSomething();}?Hi@Firo,感谢您指出显而易见的问题,在BeginHandlerRequest和类似EndHandlerRequest的方法中将其作为方面在web应用程序中实现。我是NHibernate的新手,我没想到这会马上奏效。。。我刚刚创建了一个MVC项目来测试这个东西,它可以正常工作。Doh。但是怎么做呢?我将为此提出另一个问题。再次感谢。
使用(var tx=session.BeginTransaction()){doSomething();}
?您好@Firo,感谢您指出显而易见的问题。我是NHibernate的新手,我没想到这会马上奏效。。。我刚刚创建了一个MVC项目来测试这个东西,它可以正常工作。Doh。但是怎么做呢?我将为此提出另一个问题。再次感谢。