1

私はEF6を使用しています。それぞれ独自のエンティティ データ モデルを持つ 2 つの異なるデータベース用に 2 つの名前空間を作成しました。EF 3.5 でデータベースからモデルを作成したとき、生成されたクラスはすべて、コンテキストから構築された単一のファイルに保持されていました。EF 6 では、コンテキストとクラスを生成するためにテンプレートが使用されています。

両方のデータベースに本質的に同じテーブル (バージョン テーブルとログ テーブル) があるという問題が発生しています。データベースからデータを取得する単体テストを実行すると、次のエラーが発生します。

テスト メソッド SystemDataUnitTests.UnitTest1.TestMethod1 が例外をスローしました: System.Data.Entity.Core.MetadataException: 指定されたスキーマが無効です。エラー: 複数の CLR 型が EDM 型 'EventLog' と一致するため、CLR 型から EDM 型へのマッピングがあいまいです。以前に見つかった CLR 型...

エラーを調べましたが、クラスの 1 つを削除する方法がわかりませんが、それでもすべてが機能します。

4

1 に答える 1

1

@Pawel のおかげで、問題の解決策を思いつきました。

私のように以前のバージョンの EF から来ており、EF で生成された POCO クラスを使用したくない場合は、EntityObjects を使用する必要があります繰り返しますが、古い EF バージョンと同じ機能を保持し、EF 6 にアップグレードするには、EF 6.x エンティティ オブジェクト ジェネレーターを使用します。

これを行う最善の方法は、VisualStudio の「拡張機能と更新プログラム」ツールを使用して「EF 6.x EntityObject Generator」を検索することです。

于 2013-11-04T20:48:45.450 に答える