我有一个使用EF orm进行映射的WPF桌面应用程序。我的应用有几页 每个页面都有几个窗口。每个表单创建EF上下文。应用程序中的页面仅使用无状态实体向用户显示数据。
我的问题是页面应该为单个任务更新实体,因此该页面上应该有一个上下文。因此,当我在此页面上打开窗口以更新其他实体时,此页面上有2个上下文活动。
如何防止这种情况发生?
答案 0 :(得分:0)
创建一个新类" ClientRepository"在你的项目中。该类将包含客户端具有的所有实体框架访问逻辑。
在所有窗口和页面中使用此类。
如果将此类配置为单例,则只有一个实体框架上下文。 理想情况下,这可以使用像Microsoft Unit或Ninject这样的DI框架来完成,当然你也可以手动完成。
<强> Singltons吗
你可能会问自己,这对你的单身人士来说是不是一个好主意。
我有一个类似的问题,因此在一个&#34; MVVM&#34;上询问了Brian Noyes(微软MVP)。在pluralsight网站上的课程。
在他的回复中,他写道:&#34; ...我的大多数客户服务都是单身人士,并且在应用程序的生命周期中生活。&#34;
因此,对于客户服务,可以单独使用。