2016-10-13 1 views
1

私はC#Entity Framework 6を​​使用していますが、複数のスキーマを持つデータベースを持っています。私は私を実行するとC#Entity Framework 6 - 同じテーブル名を持つ複数のスキーマを処理する方法

Project Name = Storm.API.Data 
In this project I have folders with the schema names: "Availability", "Rates". 
In each folder I have the proper 'edmx' file. 

:たとえば:

  1. Rates.Hotel
  2. Availability.Hotel

私はこのように構成された私のデータベースオブジェクトのすべてのための単一のプロジェクトを持っていますプロジェクトこのエラーが表示されます:

Schema specified is not valid. Errors: 

The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM 
type 'Hotel'. Previously found CLR type 'Storm.API.Data.Rates.Hotel', 
newly found CLR type 'Storm.API.Data.Availability.Hotel'. 

私が思いついた唯一の解決策は、スキーマを別のプロジェクトに分けることですが、2つ以上のスキーマを持っているので、それほど多くのプロジェクトを作成したくありません。

このエラーが発生していない同じプロジェクトですべてのスキーマを使用できるもう1つのソリューションはありますか?

+0

各スキーマのモデルブラウザでエンティティタイプ名を編集できます。したがって、可用性スキーマのタイプAvailability_Hotelと料金スキームのRates_Hotelがあります。 –

+0

私は別のスキーマを持つことがあなたのドメインを定義しているので、別々のプロジェクトを持つことは良い解決策だと思っています。 – SOfanatic

答えて

1

次のことが可能です。

  1. は、エンティティのための別の名前空間で、あなたのコード
  2. 使用2つの異なるDbContextクラスでそれらのそれぞれ異なるクラス名を付けます。これを別のプロジェクトに入れるかどうかは、あなた次第ですが、必須ではありません。
  3. これがうまくいくかどうかわかりませんが、一発の価値があります。すべてのスキーマに対して名前空間を作成し、すべてを1つのDbContextに収めてください。
+0

1.モデルを更新するときに失われるので、自動生成されたコードのクラス名を手動で変更することは悪い考えです。 2.同じ2つのDbContextを使用しても機能しませんでした。 3.これが私が最初にやったことです。 –

関連する問題