誰かが私を腹立たしい問題で助けてくれるのだろうか.
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 プロファイラーを実行し、ストアド プロシージャが呼び出されていないことを確認しました。
私たちはアイデアを完全に使い果たしたので、どんな助けも大歓迎です.
どうもありがとう!