2

我有一個與ASP.NET MVC,實體框架代碼優先和SQL Server開發的網站。 該網站的實體每個都有我們定義的狀態歷史記錄(NEW,PACKED,SHIPPED等) DB包含一個表格,其中一個完全獨立的系統將插入包裹追蹤數據。 我必須閱讀這些數據跟蹤數據,並遵循特定業務規則,添加到我實體的現有狀態歷史記錄中。多個程序更新相同的數據庫

我能想到的最佳方式是編寫一個獨立的Windows服務,以便每隔一段時間輪詢一次跟蹤數據並從中更新我的實體狀態。但是,這讓我擔心數據庫併發問題。

請有人建議我在這種情況下的最佳策略? 非常感謝

+0

[交易,交易,交易](http://en.wikipedia.org/wiki/ACID)...樂觀併發 - 在EF中得到很好的支持 - 也很好,但不適合所有情況(並且仍然需要內部交易來確保[ACID](http://en.wikipedia.org/wiki/ACID))。每個人都必須*在一定程度上正確參與*。 – 2011-11-02 02:45:46

+0

感謝您的評論,但這並沒有解決響應來自其他系統的新跟蹤數據的問題。 Windows服務是否應該走?數據庫觸發器如何?我認爲使用我的BaseController在每次回發中檢查它會是令人討厭的事情? – Bobbler

回答

1

有不同的方法來做到這一點。這也取決於你需要的響應時間。如果您需要在跟蹤系統更新記錄時立即更新您的系統,那麼觸發器是首選方式。另一種方法是安排一個job,每15/30分鐘運行一次並同步2個系統。

至於併發問題,您可以使用併發令牌字段。實體框架爲此具有support

+0

幸運的是,業務規則相對簡單,我可以通過數據庫觸發器實現這一點,它似乎運行良好。我相信一個更復雜的場景需要一些C#代碼,但我仍然不清楚Windows服務是否是最好的方法。無論如何,我的直接問題已解決,但它將是方便的信息,以供將來參考...感謝您的答覆。 – Bobbler

+0

@Mark如果該窗口服務僅用於數據操作,那麼您可以將其實施爲SP併爲其創建數據庫作業。那樣會更有效率。 – Eranga

相關問題