SQL Server でビューを操作するときにストアド プロシージャのサポートを挿入する方法について質問しました。
データベース ビューで作業するときに作成/更新のために NHibernate でストアド プロシージャを使用する方法
マッピング ファイルの一部を次に示します。
<sql-insert>
exec sp_cycle_insert ?,?,?
</sql-insert>
<sql-update>
exec sp_cycle_update ?,?,?,?,?,?
</sql-update>
<sql-delete>
raiserror ('Cycle can not be deleted', 10, 1)
</sql-delete>
それで、リファクタリングなどを行い、テストを実行しました....すべて失敗しました。
理由は、SQL Server にはビューとストアド プロシージャがあるためですが、テストを実行するたびに、データベースを最初からセットアップします。
new SchemaExport(configuration).Execute(false, true, false);
私は可能な解決策について考えましたが、ここにあります:方法はありますか:
- データベースに必要なもの(ストアドプロシージャ、ビューなど)を使用して追加のスクリプトを実行します(それが解決策だと思います)
一方、実行中のスクリプトは失敗する可能性があります (現在は sdf ファイルを使用していますが、将来別のプロバイダーに変更した場合はどうなりますか?)。また、プロシージャ/ビューは、WITH構造と、テスト中に使用されるデータベースでサポートされていないSQL Server 2005 関数を使用します。
- . だから、リポジトリをモックする時が来たと思いました。しかし、ここにも障害があります。ビューはいくつかの読み取り専用プロパティを計算し、NHibernate は以下を使用してバッキング フィールドにアクセスします。
access="nosetter.camelcase"
リポジトリのモックに切り替えると、コードでビューのロジックを実装する責任があります。他の解決策はありますか?それとも私が大変なことになっている!?