簡體   English   中英

將Entity Framework與Archive數據庫一起使用

[英]Using Entity Framework with Archive databases

我正在使用Entity Framework 6來執行基本的CRUD操作,這一切都很好。 我需要能夠在日期范圍內選擇我的對象,這也是非常簡單的。然而,這些對象可以分布在幾個基本上是前一年數據倉庫的數據庫中。 一旦我們在日期范圍內尋找它們。

示例我們想要2015年1月1日到2016年11月9日之間的所有Foo對象; 2015年的Foo數據將位於不同的數據庫中。 這一直追溯到2005年。並非所有的Schema都是相同的。

我們可以有11個EF項目,或11個上下文和11個連接字符串。 該解決方案存在每年在創建存檔時添加代碼的問題。 這似乎是一個黑客。 在可預見的未來,交換到Azure存儲方法不是一種選擇。

更優雅的解決方案?

只要所有數據庫對於要查詢的實體都具有相同(或類似)的模式, DbContext以為所有數據庫創建一個DbContext ,只需切換連接字符串即可。 您必須管理連接字符串列表並循環遍歷它們,連接到每個連接字符串並查詢每個連接字符串以獲取數據。 當然,如果您的數據庫以一致的方式命名(例如,根據年份),則不需要維護所有連接字符串。 如果您的查詢只訪問過一個數據庫,那么您可以計算出哪個是合適的連接字符串並使用它。 這最終看起來像標准的分片策略。 以下是Microsoft針對EF的SQL Azure分片庫的引用,它也可能是一種解決方案

或者,您可以使用SQL Server的跨數據庫查詢功能並在所有數據庫中設置視圖。 這有維護問題,更不用說性能問題了,但后來我不知道你的數據大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM