在使用多个表单时,我在同步上下文时遇到了困难。想象一下,ProductsCollectionView表单包含一个产品列表(网格),而ProductView表单是您编辑选定产品的地方。
我按照MS指南的建议,通过每个表单上下文来管理EF上下文生命周期。
我在这里发现了类似的问题,但没有一个答案实际上提出了解决方案,而是将OP的设计定义为糟糕,并建议实现UnitOfWork/Repository模式。
首先,我看不出这是如何解决这个特殊问题的。更重要的是,这不是多余的吗,DbContext本身不是UnitOfWork,DbSet不是存储库吗?
可以说,通过实现这些模式并使更改EF更容易使用其他东西或提供测试数据,进一步抽象数据访问层会使您受益。但这不是话题。
回到问题,在这种情况下,我将如何反映对ProductView到ProductCollectionView所做的更改?
我的最佳猜测是实现某种中介,并让DbContexts在进行更改时通知它,并侦听来自其他上下文的更改,然后根据更改对本地数据集进行操作。
我已经坚持了好几天了。我甚至看到我的猫在我休息的时候试图修复这个问题--没有运气。但是,老实说,我认为它不知道如何编码。:)
指向正确的方向是很有帮助的,提供一些代码示例/文章确实非常有帮助:)
谢谢
建立了P.S.模型CodeFirst (逆向工程)。
编辑:,也许我不清楚。我的目标是在ProductView的底层上下文中用户调用ProductsCollectionView ()之后,通过ProductView更新SaveChanges()。不仅限于此场景,还可能会打开另一个表单,其上下文加载了该产品记录,并需要反映对该记录所做的更改。
发布于 2016-02-08 11:14:35
到目前为止,某种中介/信使服务是最好的,也是我找到的唯一解决方案。如果有人想出别的办法,我会很高兴知道的。
简而言之:在保存更改/添加实体时,发送消息/通知,并让ViewModel或上下文直接订阅信使,并加载/重新加载添加/更改的实体。
https://stackoverflow.com/questions/34811323
复制相似问题