如何在同一解決方案中支持多個實體框架模型

.net entity-framework orm

我已經開始使用實體框架開發應用程序。

我添加了一個名稱空間來包含我的所有用戶管理代碼MyApp.Users,例如,它包含一個標記在命名空間內部的模型,並且只通過接口向系統的其餘部分公開功能。這一切都很好。

我現在希望定義另一個名稱空間來處理特定的業務邏輯。我希望它包含一個只知道數據庫模式的另一個子集的模型,但是這個子集在Users表上重疊。當我嘗試訪問主項目中的第二個模型時,我收到此錯誤:

“EdmType無法多次映射到CLR類”

我覺得這不應該以這種方式表現。在2個不同的命名空間中由2個不同的模型引用所有用戶表之後...... VS怎麼知道該表被引用了兩次?

有沒有人看到過這個問題,也許還想出瞭如何讓同一個表存在於不同的模型中?

或者 - 這是否代表某種我應該避免的實體框架反模式?

一般承認的答案

要在多個模型中重用類型,您需要遵循此博客文章中概述的某些特定步驟 。與許多更高級的Entity Framework功能一樣,這可行,但與GUI設計器的工作效果不佳。有關處理大型模型的更多想法,請參閱此簡介


熱門答案

你絕對可以有多個模型 - 但它們不能重疊 。錯誤信息非常清楚 - 如果它們確實重疊,EF將如何知道要映射到哪種CLR類型 - 真的沒有辦法告訴它。

在您的情況下,如果需要在其他兩個地方使用,您可以嘗試將Users表提取到自己的第三個模型中。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因