2011-02-02 2 views
0

프로젝트에서이 세 라이브러리를 사용하는 데 문제가 있습니다. 나는 스토어드 프로 시저를 호출하는 것이 그들의 FAQ에 따라 Fluent NHibernate에서 직접적으로 지원되지 않는다는 것을 이해하고 따라서 호출한다. 그래서 난 내 저장 프로 시저에 대한 매핑 간단한 hbl.xml 파일을 정의하십시오 n 일반적인 라이브러리를 사용하여 내 서비스 코드에서, 그래서 지금Autofac, NCommon 및 Fluent NHibernate를 사용하여 저장 프로 시저 호출

<?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> 

, 내가 가진 : 그래서 유일한

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

    ... 
} 

을 방법은 DontKnowWhereToGetSessionManager가 Autofac을 내 서비스에 주입시키는 방법입니다. 그러나 그것은 잘못된 길처럼 보입니다. UnitOfWorkScope에서 가져올 수있는 방법이 있습니까? 아니면 그냥 Autofac으로 주입해야합니까?

답변

3

UnitOfWorkScope의 CurrentUnitOfWork 특성을 사용하여 현재 작업 단위 (UOW)를 얻을 수 있습니다.

using (var scope = new UnitOfWorkScope()) 
{ 
    var session = scope.CurrentUnitOfWork<NHUnitOfwork>().GetSession<MyResultClass>(); 
    sesion.GetNamedQuery("MyStoredProc").List<MyResultClass>(); 
} 
관련 문제