2

人々は Entity フレームワークで巧妙なことをしていますが、私は非常に単純なことをしていると思います。

2 つの別個のデータベースがあります。データベース A とデータベース B。

これらのデータベースへのコンテキストを個別に作成する必要があるため、いずれかのコンテキストをインスタンス化するファクトリ パターンが必要です。データベースファーストのアプローチを使用しようとしています。

Nuget パッケージ マネージャー経由で Entity Framework を参照し、Visual Studio を使用して新しいアイテムを作成しました。選択できる EDMX 拡張子を持つアイテムは「ADO.NET Entity Data Model」だけだったので、それを使用してデータベース A を選択しました。

EDMX ファイルが生成され、エンティティが表示されます。プログラムでそれらにアクセスする場合、エンティティはデフォルトのネームスペースにダンプされています。これは、my.namespace.datasource.TableA に移動することで、エンティティの IntelliSense を取得することを意味します。

同じ領域に別の EDMX ファイルを作成すると、同じエンティティが同じ場所にダンプされ、競合が発生します。

私が得るエラーの例は次のとおりです。

「型 'my.namespace.datasource.Entities' には既に 'TableA' の定義が含まれています」

どうしてこれなの?エンティティが存在する EDMX ファイルの既定の名前空間を作成しないのはなぜですか? 複数の EDMX ファイルを調和させ、必要なときに個別のコンテキストを提供するにはどうすればよいですか?

どんな助けでも大歓迎です!

乾杯、

カール。

4

1 に答える 1

3
  • オプション 1. ソリューション エクスプローラーでモデル プロジェクト アイテムを選択し、アイテムのプロパティに移動して、プロパティ "Custom Tool Namespace" を適切な値に設定します。生成されたコードは、設定した名前空間に配置されます。
  • オプション 2. 2 つの別個のフォルダーを作成し、1 つのモデルを最初のフォルダーに入れ、もう 1 つのモデルを 2 番目のフォルダーに入れます。
  • オプション 3. モデルを別々のプロジェクトに入れます。

. VS2010 と任意の T4 ジェネレーター (DbContext ジェネレーターなど) を使用している場合は、次のことを行う必要があります。

  • EDMX プロジェクト アイテムの「カスタム ツール」プロパティをクリアして、デフォルトのコード生成をオフにします。
  • Model1.ttT4 プロジェクト項目 (および など)の「カスタム ツールの名前空間」を設定しModel1.Context.ttます。
于 2012-12-11T10:58:50.960 に答える