2011-07-11 56 views
1

我有一個系統(使用實體框架),部署在各種生產系統和質量控制系統中。我的問題是,數據輸入通常只在我係統出現的其中一個(不同的數據庫)上進行。如何將數據(實體)從一個數據庫傳輸到另一個數據庫

我想找到將我的數據從一個數據庫傳輸到另一個數據庫的最佳方式。只要我的對象之間的關係得以保持,我就可以改變。 98%的數據在數據庫中,其中一些是外部文件,我可以手動單獨管理這些數據。

目前我們使用xml結構作爲轉換文件。然後將文件導入到目標系統中,並通過代碼手動導入實體並重新創建數據。

我正在尋找更通用的方式來做到這一點,少用代碼。由於我存儲在實體中的所有數據都不能簡單地創建一個大的List,並將所有對象放在那裏,然後將其序列化到一個外部文件中,最後通用地導入目標系統中的所有實體? (我可能不得不小心保持關係ID,但應該是好的...)

反正我想知道如果有人會有聰明的做法,我敢肯定我,我不是第一個與類似的問題。

謝謝!

+1

而且您希望EF通過SSIS,因爲...... –

+0

因爲我不瞭解SSIS?我會在今天看到它,如果可以,請放下鏈接。 –

+0

#Sébastien抱歉,我添加了一個答案,祝你好運。 –

回答

2

你需要得到一些過程。如果所有環境都包含相同的數據(不太可能),則可以複製。這是最自動的。但質量保證環境不應該更新生產,所以你必須真正考慮這一點。

如果半自動化可以,那麼您可以使用各種供應商提供的工具。我個人使用紅門工具,但其他人也很好。

你能設置一個更自動化的EF推送嗎?當然,但你花費的時間真的不值得。

+0

原因是非常具體和常見的,我們有這個演示,所以我們需要爲演示產生演示內容。我們希望在我們的QC環境中生成這些信息,然後一旦穩定(將會明確帶來錯誤),將其發佈到「演示」「虛擬」產品網站上,以便從網絡訪問。紅門接縫是一個很好的解決方案,但它有點貴。 –

+0

如果你只需要通過這個演示,工具製造商都有試用期。我認爲紅色門是14,Altova是30.我沒有嘗試過Devart,但是它們有點便宜。通過一些編程,Sync Framework可能會工作,但由於我還沒有玩過它,我不想推薦這個路徑。 –

+0

如何使用「代碼」方法而不是數據庫方法,那裏的解決方案?像序列化ORM等? –

1

在我看來,您可以檢查以下一些方法:

1)使用SQL比較或SQL數據比較。這些工具從Red Gate可以找到here

2)定期備份和恢復數據庫。如果是定期備份最新數據庫並在目標系統上恢復,則可以選擇此選項。我沒有自動化這方面的經驗,但這是通過.net的link

3)你可以隨時創建一個你自己的版本控制系統。我想描述一個這樣的系統,從某個表(或所有這些表)中選擇所有記錄,刪除目標數據庫中的所有記錄並插入它們。這看起來相當複雜,因爲您不得不擔心關係,數據依賴性等。

希望這有助於某種方式。 Regards


1

如果您出於某種原因不滿意現有的工具,可能需要查看Sync Framework並自己實現此功能以用於您特定的數據庫。

1

鑑於您所描述的,將數據從一臺SQL Server推送到另一臺用於演示目的,您應該考慮SQL Server Integration Services

如果您有一個簡單的場景,您只需將數據和對象從數據庫移動到下一個數據庫,則可以使用其內置的嚮導。如果你需要做自定義的東西,你可以使用C#和SQL(你已經知道的工具)構建複雜的工作流程。注意:大多數你想要的都是standard edition,所以如果你使用快遞,這是不太有趣的。

當你沒有SQL Server的時候,Red Gate產品的故事更引人注目(所以你必須出去買東西),如果你有興趣找出DB之間的變化(比如查看代碼更改源代碼管理產品中的.cs文件)

+0

面臨的挑戰不僅僅是將數據從一個數據庫移動到另一個數據庫,而是移動間接連接到數據庫中的某個ID的特定SLICE數據。 –

+1

@NielsBrinch我以爲我用*解決了這個問題,如果你需要做自定義的東西,你可以使用C#和SQL *構建複雜的工作流程。 –

+0

對不起,我把這個評論放在錯誤的帖子上。我的錯。對困惑感到抱歉。 –

相關問題