Nhibernate 在ActiveRecordMediator中,应该使用Execute还是CreateSession?

Nhibernate 在ActiveRecordMediator中,应该使用Execute还是CreateSession?,nhibernate,castle-activerecord,isession,Nhibernate,Castle Activerecord,Isession,假设我要做的事情需要访问NHibernate的会话。例如,通过ISQLQuery运行Sql查询,或通过session.LINQ()运行LINQ到NHibernate。我知道有两种方法可以访问ISession: ActiveRecordMediator.GetSessionFactoryHolder().CreateSession() ActiveRecordMediator.Execute() 每种方法的优缺点是什么?此外,还有其他替代方法吗?我想不出任何技术上的原因来选择一种方法而不是另一种,

假设我要做的事情需要访问NHibernate的
会话
。例如,通过
ISQLQuery
运行Sql查询,或通过
session.LINQ()
运行LINQ到NHibernate。我知道有两种方法可以访问ISession:

  • ActiveRecordMediator.GetSessionFactoryHolder().CreateSession()
  • ActiveRecordMediator.Execute()
  • 每种方法的优缺点是什么?此外,还有其他替代方法吗?

    我想不出任何技术上的原因来选择一种方法而不是另一种,但是ActiveRecordMediator.Execute是唯一的选择


    顺便说一句,执行LINQ查询不需要这些,您可以使用Castle.ActiveRecord.LINQ。

    似乎
    ActiveRecord.Execute
    会自动处理会话,但另一种方式不会。这可能是在文档中首选
    ActiveRecord.Execute
    而不是其他方式的原因。顺便说一句,关于
    Castle.ActiveRecord.Linq
    ?@afsharm:当然,自己获取会话意味着使用
    块将其包装在
    中。Re LINQ:看到了吗