2012-12-11 45 views
2

人們正在用Entity框架做一些聰明的事情,但我認爲我正在做一些非常簡單的事情,似乎無法實現。爲工廠模式創建多個實體框架EDMX文件

我有兩個單獨的數據庫。數據庫A和數據庫B.

我需要分別爲這些數據庫創建上下文,所以我需要一個工廠模式來爲我實例化上下文。我正在嘗試使用數據庫第一種方法。

我通過Nuget包管理器引用了實體框架,並使用Visual Studio創建了一個新項目。唯一具有EDMX擴展名的項目是「ADO.NET實體數據模型」,所以我已經選擇了該數據庫和A數據庫。

EDMX文件已生成,我可以看到我的實體。當以編程方式訪問它們時,實體已被轉儲到默認名稱空間中。這意味着我可以通過my.namespace.datasource.TableA獲得實體的智能感知。

如果我現在在同一區域創建另一個EDMX文件,相同的實體將被轉儲到同一個地方,我會發生衝突。

錯誤我得到的是的例子:

「類型‘my.namespace.datasource.Entities’已經包含了‘表A’的定義」

這是爲什麼?爲什麼它不是爲這個實體所在的EDMX文件創建一個默認名稱空間?我怎樣才能讓多個EDMX文件協調工作,並在需要時提供獨立的上下文?

任何幫助的讚賞!

乾杯,

卡爾。在解決方案資源管理

回答

3
  • 選項1.選擇示範工程項目,進入項目 屬性,設置屬性「自定義工具命名空間」的首選 值。您生成的代碼將被放入您設置的名稱空間中。
  • 選項2.創建兩個單獨的文件夾,並將一個模型放入第一個文件夾 ,並將其放入第二個文件夾。
  • 選項3.將模型放入單獨的項目中。

備註。 如果您使用VS2010和任何T4發電機(例如,發電機的DbContext),你應該:

  • 關閉默認的代碼生成通過清除對EDMX項目項的「自定義工具」屬性;
  • 爲T4項目項目設置了「自定義工具名稱空間」(例如Model1.ttModel1.Context.tt)。
+0

感謝您的回覆Dennis!我確實嘗試了選項1和2,但它似乎沒有影響生成的POC的名稱空間。選項3似乎是目前爲止最好的選擇! – Karl

+0

@Karl:你在用什麼發電機?你可以發佈自定義工具名稱嗎? – Dennis

+0

我不是100%肯定是誠實的。我通過NuGet包管理器安裝了EF5,並通過添加新的 - >數據 - > ADO.NET實體數據模型創建了edmx文件。 – Karl

相關問題