2017-07-25 86 views
1

我正在研究一個應用程序,其中有大約5個上下文,每個對應於數據庫中的數據庫模式(模式如Accounts,Sales,Purchases ..等),所有這些都連接到同一個數據庫。 現在我建立在數據庫中存儲的審計功能,這是所有環境共享的功能,基本上,我重寫SaveChanges方法,還有我保存ChangeTracker.Entries其中存在於CommonContextAudit表,現在我想在所有上下文中應用相同的代碼,我想在這兩個選項中:在EF覆蓋SaveChanges的幾個上下文中共享代碼?

- 在每個上下文中都有一個表,並在所有上下文中複製/粘貼審計代碼(可怕的選項)。

- 在所有上下文中調用並打開CommonContext,這對我來說似乎不是很好的做法(在另一個上下文中打開上下文,我將不得不引用CommonContext庫)。

這些是我能想到的唯一選擇,所以我在這裏尋求幫助!

我使用EF 6數據庫優先。

+0

我認爲如果您將CommonContext設置爲Base上下文並從其他上下文繼承它。 –

回答

0

你要做的是創建一些常見的跨領域關注基礎設施,因此重複和繼承不是很好的選擇。您應該在上下文中創建具有通用接口訪問實體的存儲庫,而不是創建存儲庫的裝飾器,以便在內部持有CommonContext的審計目的。您還必須確保CommonContext和其他人共享相同的連接並在相同的TransactionScope下運行。