私はEntity Frameworkで作業しており、それにヒットするコードをテストしようとしています。すべてのコードは正常に動作しますが、テストに問題があります。テスト時にこのコードを実行すると:
_entities = new Mock<MyEntities>();
Database.SetInitializer(new DropCreateDatabaseAlways<MyEntities>());
_entities.Object.Database.Initialize(true);
「EntityType にキーが定義されていません」というエラーが表示されます。一部のテーブルは、id 列に「ID」または「[テーブル名]ID」という命名規則に従っていないため、以前にこれらを取得していました。それらをクリーンアップした後も、複合キーを持つテーブルのそれらを取得します。SQLに関する限り、それらは正しく定義されています。EDMX デザイナーで列をクリックすると、それらがキーであると表示されます。では、それらをキーとして適切に定義するにはどうすればよいでしょうか。コードはどこに置くのですか?
私はこれを調べてみましたが、すべての参照は具体的に Code First の実装に関するものです。とにかくやってみた。彼らは、DbContext オブジェクトの OnModelCreating メソッドをオーバーライドし、これを追加するように言いました。
modelBuilder.Entity<Widgets>().HasKey(widget => new { widget.A, widget.B });
そこで、部分クラスを作成してオーバーライドしようとしました。すでにオーバーライドされていました。それで、生成された部分クラスに行きました。実装は次のとおりです。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
それは正しくありません。それで、私は今何をしますか?
適切な統合テストを作成できるように、Web プロジェクトで EDMX に基づいてテスト データベースを生成したいと考えています。前もって感謝します。