2017-03-14 68 views
0

背景添加信息時,在我的數據庫

執行CRUD操作我有一個MVC網站與實體框架代碼第一個數據庫(主數據庫)來排隊。我還有一個報告數據庫,將數據提供給我的報告頁面。此外,我有一個隊列,可以添加一條消息,並且一個服務將選取它並在主數據庫和報告數據庫之間同步數據。

注意數據庫不具有相同的模式。

問題

我想將消息添加到我的隊列(這樣我就可以同步我的數據庫之間的數據)後,對數據庫的操作已完成,記錄已經被插入/更新/刪除。

理念

我想覆蓋的DbContext的調用SaveChanges()方法,並調用我的方法插入一個消息隊列,但我不知道這是一個好主意。有什麼想法嗎?

或SQL觸發器,增加了一個消息隊列? (我不太喜歡這個想法,因爲我不想將任何業務邏輯轉換爲SQL)。

+0

你想讓你的數據庫被複制嗎?或者你想在你的數據庫中有不同的數據? –

+0

我基本上想從我的主數據庫中複製一些數據(不是全部)到我的報告數據庫。這兩個數據庫有不同的架構。 –

+0

爲什麼你不使用ETL過程並使用類似SSIS的東西? – Macilquham

回答

0

如果你想這樣做內EF你可以看看DbCommandInterceptor http://www.entityframeworktutorial.net/entityframework6/database-command-interception.aspx

我也建議看SSIS,我知道你想要做這一切的代碼,但SSIS是數據遷移建的目的。我不是SSIS的專家,但我知道你可以調用Web服務(網絡服務任務)https://msdn.microsoft.com/en-us/library/ms140114.aspx並執行.net代碼(腳本任務)https://msdn.microsoft.com/en-us/library/ms135944.aspx

同意在sql中有太多業務邏輯可能是一件壞事,但如果另一種方法是構建複雜的移民代碼,然後顯然你需要權衡利弊。

的最後一件事病一提的是在數據庫級別http://tsqlt.org/單元測試,它可以幫助克服一些具有存儲在數據庫中的業務邏輯的弊端。

HTH

相關問題