2

100 を超える dables を含むデータベースがあります。EF モデルを 3 つの異なるモデルに分割することにしました。複数のモデルに表示されるテーブルがいくつかあります。EF 5.X DbContext Generator を使用した後、POCO クラスを取得しました。

このテンプレートは、繰り返されるクラス (複数のモデルに現れるもの) を生成しますが、名前空間は異なります。このいずれかを照会しようとした後、次のエラーが発生しました。

The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type

この問題に直面した後、2 つの選択肢があると思います。

  1. CSDL、MSL、SSDL ファイルを編集して、エンティティの名前を変更します。この場合、コンテキスト名をプレフィックスとしてエンティティに追加します。
  2. EF 5.x DbContext Generator を編集して、生成される POCO クラスの名前を編集します。この場合、POCO クラスのプレフィックスとしてコンテキスト名も追加します。

私の質問は次のとおりです。どのオプションに従うべきですか? そして、選択したオプションに従って何をする必要がありますか。どの選択肢も有効でない場合、どうすればよいでしょうか?

4

2 に答える 2

1

t4テンプレート(オプション2)を編集すると、すべてのクラスが影響を受けます。クラス名を編集することで(デザイナーサーフェスで実行できます)、より多くのコンテキストで共通のクラスのみを変更できます。

したがって、重複するクラスが少ない場合は、オプション1を選択します。同様のシナリオで同じことを行います。このシナリオでは、一部のテーブルが複数のコンテキスト(ビジネス、承認、レポートなど)に含まれ、クラスが元の名前を持つコンテキストは、そのクラスでのCUDアクション用です。また、すべてのクラスにプレフィックスを付けたくありません。

于 2013-02-14T23:01:10.400 に答える
-2

.edmxファイルを削除して、再作成しました。
これで問題は解決しました。これが役立つかどうかはわかりません。

于 2013-06-11T17:42:34.097 に答える