2016-10-13 33 views
1

我正在使用C#實體框架6,並且我有一個帶有多個模式的數據庫,在這些模式中我有相同名稱的表。例如:C#實體框架6 - 如何處理多個具有相同表名的模式

  1. Rates.Hotel
  2. Availability.Hotel

我有一個單一的項目全部採用這種結構我的數據庫對象:

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. 

當我跑我的項目我得到這個錯誤:

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'. 

我想出的唯一解決方案是將模式分爲不同的項目,但由於我有兩個以上的模式,我不想爲此創建太多項目。

是否有另一種解決方案,使我能夠在沒有此錯誤的同一項目下擁有所有模式?

+0

您可以在模型瀏覽器上爲每個模式編輯實體類型名稱。因此,您有Type Availability_Hotel on Availability架構和Rates_Hotel on Rates架構。 –

+0

我認爲單獨的項目是一個很好的解決方案,因爲具有不同的模式定義了您的域,並且最好通過單獨的項目來清楚地區分這個域。 – SOfanatic

回答

1

您可以:

  1. 給他們每個人不同的類名在代碼
  2. 使用2個不同的DbContext類,用不同的命名空間的實體。無論你把這個放在另一個項目中取決於你,但不是必需的。
  3. 不知道這是否可行,但值得一試:爲每個模式創建一個命名空間,並在1個DbContext中包含所有內容。
+0

1.在自動生成的代碼中手動更改類名是一個壞主意,因爲更新模型時會丟失它。 2.同樣使用2個DbContext無法工作。 3.這是我做的第一個地方。 –

相關問題