我在尝试在项目中使用这三个库时遇到问题。我理解,因此根据他们的常见问题解答,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 注入它?