プロジェクトでこれら 3 つのライブラリを使用しようとすると問題が発生します。FAQによると、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>
さて、私のサービス コードでは、NCommon ライブラリを使用して、次のようにしています。
using (var scope = new UnitOfWorkScope())
{
...
DontKnowWhereToGetSessionManager.Instance.Session.GetNamedQuery("MyStoredProc").List<MyResultClass();
...
}
したがって、DontKnowWhereToGetSessionManager を取得する唯一の方法は、Autofac にそれをサービスに注入させることです。しかし、それは間違った方法のようです。UnitOfWorkScope から取得する方法はありますか? それともAutofacで注入するだけですか?