データ アクセス層の単体テストに NDbUnit を使用しています。
さまざまなテーブルにデータ行を入力するために使用される XSD および関連する XML ファイルを構築するとき、すべてが正常に機能しています。ただし、ID 列である場合、整数の PK 列に対して XML を介して直接 PK を設定できないことに気付きました。
つまり、データベースが行の挿入時に PK のインクリメントと設定を自動的に処理する場合、NDbUnit はこれをオーバーライドしてそれ自体を設定することができません (私の知る限り)。
NDbUnit がこの ID 列の値をオーバーライドして XML から直接設定する方法はありますか、または挿入された行に対して SQL Server が作成する自動インクリメント値に固執していますか? または、ID 列を含む行を挿入し、その後その値を別のテーブルの行の FK として使用するために使用する必要がある別のパターンはありますか?
アップデート:
NDbUnit データベース操作を実行するとき、パラメーターを Insert だけでなく InsertIdentity に設定する必要があることを発見しました。
INDbUnitTest database = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connectionString);
database.PerformDbOperation(DbOperationFlag.InsertIdentity);
ただし、この変更を行った後でも、行が挿入されているため、次のエラーが発生します。
IDENTITY_INSERT が OFF に設定されている場合、テーブル 'myTable' の ID 列に明示的な値を挿入できません。
これにより、NBDUnit メソッドに設定されている InsertIdentity フラグが、実際には SQL Server 内の特定のテーブルに対して IDENTITY_INSERT を OFF に設定しているとは思えません。
なぜこれが起こらないのかについての提案はありますか?