Stored procedures 使用Autofac、NCommon和Fluent NHibernate调用存储过程

Stored procedures 使用Autofac、NCommon和Fluent NHibernate调用存储过程,stored-procedures,fluent-nhibernate,autofac,ncommon,Stored Procedures,Fluent Nhibernate,Autofac,Ncommon,我在项目中使用这三个库时遇到了问题。我理解,因此,根据Fluent NHibernate的常见问题,它们不直接支持调用存储过程。因此,我定义了一个简单的hbl.xml文件,其中包含存储过程的映射: <?xml version='1.0' encoding='utf-8'?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="My.Data.Mappings" assembly="My.Data.Ma

我在项目中使用这三个库时遇到了问题。我理解,因此,根据Fluent NHibernate的常见问题,它们不直接支持调用存储过程。因此,我定义了一个简单的hbl.xml文件,其中包含存储过程的映射:

<?xml version='1.0' encoding='utf-8'?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="My.Data.Mappings" assembly="My.Data.Mappings">
    <sql-query name="MyStoredProc" callable="true">
        <query-param name="paramA" type="date" />
        <query-param name="paramB" type="int" />
        <return alias="MyResultClass" class="My.Data.Mappings.MyResultClass, EP.Core.Data.Mappings" />
        exec myStoredProc @paramA = :paramA, @paramB = :paramB
    </sql-query>
</hibernate-mapping>

exec myStoredProc@paramA=:paramA,@paramB=:paramB
现在,在我的服务代码中,使用NCommon库,我有:

using (var scope = new UnitOfWorkScope())
{
    ...
    DontKnowWhereToGetSessionManager.Instance.Session.GetNamedQuery("MyStoredProc").List<MyResultClass();

    ...
}
使用(var scope=new UnitOfWorkScope())
{
...

DontKnowToGetSessionManager.Instance.Session.GetNamedQuery(“MyStoredProc”).List您可以使用UnitOfWorkScope的CurrentUnitOfWork属性获取当前工作单元

using (var scope = new UnitOfWorkScope())
{
  var session = scope.CurrentUnitOfWork<NHUnitOfwork>().GetSession<MyResultClass>();
  sesion.GetNamedQuery("MyStoredProc").List<MyResultClass>();
}
使用(var scope=new UnitOfWorkScope())
{
var session=scope.CurrentUnitOfWork().GetSession();
sesion.GetNamedQuery(“MyStoredProc”).List();
}

您可以使用UnitOfWorkScope的CurrentUnitOfWork属性获取当前工作单元

using (var scope = new UnitOfWorkScope())
{
  var session = scope.CurrentUnitOfWork<NHUnitOfwork>().GetSession<MyResultClass>();
  sesion.GetNamedQuery("MyStoredProc").List<MyResultClass>();
}
使用(var scope=new UnitOfWorkScope())
{
var session=scope.CurrentUnitOfWork().GetSession();
sesion.GetNamedQuery(“MyStoredProc”).List();
}