簡體   English   中英

如何以多種形式管理實體框架上下文

[英]How to manage Entity Framework Contexts with multiple forms

使用多種形式時,我無法同步上下文。 想象一下,擁有包含產品列表(網格)的ProductsCollectionView表單和用於編輯所選產品的ProductView表單。

我按照MS准則的建議,通過在每個表單中都有一個上下文來管理EF上下文的生存期。

我在SO上找到了類似的問題,但是沒有一個答案實際上提出了解決方案,而是將OP的設計定義為不好,並建議實現UnitOfWork / Repository模式

首先,我不認為這可以解決這個特定問題。 而且更重要的是,這不是多余的嗎,DbContext本身不是UnitOfWork,還是DbSet是存儲庫嗎?

有人可能會說,您可以通過實現這些模式並使通過其他方式更改EF或提供測試數據更加容易來進一步抽象化數據訪問層,從而從中受益。 但這不是主題。

回到問題,給定場景,我將如何反映在ProductView上對ProductCollectionView所做的更改?

我最好的猜測是實現某種介體,並讓DbContext在進行更改時通知它,並偵聽其他上下文中的更改,然后根據更改對本地數據集進行操作。

我已經堅持了好幾天了。 我什至看到我的貓在休息時試圖解決這個問題-沒運氣。 但是,老實說,我不認為它會編碼。 :)

為我指出正確的方向是非常有幫助的,提供一些代碼示例/文章確實非常有幫助:)

謝謝

PS模型是CodeFirst(反向工程)構建的。

編輯:也許我不清楚。 我的目標是在用戶調用ProductView的基礎上下文上的SaveChanges()之后,使用通過ProductView進行的更改來更新ProductsCollectionView。 不僅限於這種情況,可能還會打開另一個窗體,該窗體的上下文已加載了此產品記錄,並且需要反映對該記錄所做的更改。

到目前為止,某種形式的中介/信使服務是最好的,也是我找到的唯一解決方案。 如果有人提出了其他建議,我將非常高興。

簡而言之:保存更改/添加實體時,發送消息/通知並讓ViewModel或Context直接訂閱Messenger並加載/重新加載已添加/更改的實體。

暫無
暫無

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

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