我想知道是否有人可以帮助我解决一个令人愤怒的问题。
我们在从 nHibernate 调用的 SQL Server 2008 数据库中有一个存储过程。我们有各种单元测试来测试我们的数据访问存储库,当这些测试从我们的本地 Visual Studio 机器上运行时,它们就通过了。但是,当作为我们在 TFS 2010 上针对同一数据库的自动构建的一部分执行时,存储库代码会失败,并显示:
命名查询未知:GetMyData
映射 XML 看起来像(我已经简化并删除了公司特定的东西):
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="MyCompany.SystemDomain" namespace="MyCompany.SystemDomain">
<class name="MyClass">
<id name="Guid" type="guid"/>
<property name="QuoteReference"/>
</class>
<sql-query name="GetMyData">
<return alias="GetMyData" class="MyClass">
<return-property column="Guid" name="Guid"/>
<return-property column="QuoteReference" name="QuoteReference"/>
</return>
exec MyStoredProc :param1, :param2
</sql-query>
调用 C# 代码如下所示:
IQuery query = session.GetNamedQuery("GetMyData");
query.SetString("QuoteReference", quoteReference);
query.SetInt32("FSANumber", 12345);
IList<MyClass> result = query.List<MyClass>();
我已经检查了 .hbm.xml 文件是嵌入式资源,并且我已经使用 Reflector 打开了包含上述代码的存储库程序集(取自我们在 Binaries 文件夹中的构建服务器),并且可以看到包含映射的嵌入式资源,并且我可以看到使用 session.GetNamedQuery() 调用调用的命名查询与该程序集中的 sql-query 映射元素中的 name 属性匹配。
当自动构建单元测试执行时,我还在我们的数据库上运行了 SQL Profiler,并确认在此期间没有调用存储过程。
任何帮助将不胜感激,因为我们已经完全没有想法了。
非常感谢!