У меня возникла проблема с использованием этих трех библиотек в проекте. Я понимаю, и поэтому вызов хранимых процедур напрямую не поддерживается в 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?