2012-03-05 175 views
1

是否可以使用實體框架4.3而不將模型鏈接到後端的實際數據庫?沒有數據庫的實體框架?

我需要建立在VS設計數據庫的概念模型,然後我想手動處理讀取,插入和更新各種後端數據庫(可怕的遺留系統)。我需要能夠做到這一點,而不EF呻吟沒有表映射等我意識到,這是想要做一個很奇怪的事情......

這樣做的原因是,我們想動從這些遺留系統轉變爲精心設計的數據模型和.NET環境,但我們仍然需要在開發過程中保持功能和與舊系統的向後兼容性。然後我們將達到一個階段,我們可以將舊數據(來自大約6個不同的數據庫)導入與我正在構建的EF模型相匹配的單個數據庫。理論上,我們應該能夠從被黑了的EF模型切換到適合新數據結構的適當EF模型。

這是可行的嗎?有沒有可能使用EF接口,與LINQ沒有實際指向數據庫?

我已成功通過重寫產生的DbContext和暴露其查詢舊系統的IQueryable屬性查詢遺留系統。我現在最大的爭議是實際更新數據。

如果我能有EF軌道變化的實體,但實際上沒有保存這些更改。我應該能夠覆蓋上下文中的SaveChanges()方法來手動插入各種舊錶。

我有點在這個問題目前的智慧結束。

UDPATE 2012年9月4日:我已經選擇使用EDMX文件設計師建立數據模型和我產生用T4代碼。這使我可以手動編寫映射代碼以滿足我的需求。它還使我能夠相對輕鬆地執行舊數據遷移。

+1

當然,任何事情都是可能的,但我很肯定這種方法不可行。您是否有理由不想實施後端數據庫並處理遺留系統之間的數據交互?這是一個很好的途徑,以獲得你想去的地方。 – 2012-03-05 14:46:10

回答

0

如果我是你情我倒是建立新的DB服務器和傳統服務器鏈接到它。然後創建存儲過程以與EF進行INSERT/UPDATE/DELETE接口。這樣,您的EF代碼與傳統支持混亂保持分離。當您淘汰舊數據庫服務器時,您可以相應地更新存儲過程。一旦你沒有更多的遺留數據庫服務器,你可以繼續使用你的sprocs或刷新你的E​​F數據連接來直接使用表模式。

0

實體框架是將實體鏈接到數據存儲,無需手動填充。 否則,你只是用linq的類。

如果你的意思是你不想像sql server,mongo等那樣分開存儲數據,那麼就讓你的應用程序創建數據庫作爲一個mdb文件,並將它捆綁到你的app_data文件中。這意味着您不需要數據庫服務器就可以這麼說,數據庫是您的應用程序的一部分。

另一方面,如果您希望以不同的方式保存到數據庫,則可以創建自己的數據適配器以表現自己喜歡的行爲。 mongo .net實體框架組件就是一個例子。

另外,只使用代碼,你可以使用存儲過程來堅持數據庫,這可能有點冗長和煩人的EF,但可以彌補你的缺口,並允許你建立一個良好的架構與模型你想把它翻譯成你的倉庫中的糟糕的一個。

然後,當新的數據庫準備就緒時,您可以重新制作您的倉庫以使用savechanges並完成。

這當然只適用於僅有代碼的方法。