实体框架上下文生存期

时间:2015-11-22 21:07:02

标签: wpf entity-framework orm

我有一个使用EF orm进行映射的WPF桌面应用程序。我的应用有几页 每个页面都有几个窗口。每个表单创建EF上下文。应用程序中的页面仅使用无状态实体向用户显示数据。

我的问题是页面应该为单个任务更新实体,因此该页面上应该有一个上下文。因此,当我在此页面上打开窗口以更新其他实体时,此页面上有2个上下文活动。

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

创建一个新类" ClientRepository"在你的项目中。该类将包含客户端具有的所有实体框架访问逻辑。

在所有窗口和页面中使用此类。

如果将此类配置为单例,则只有一个实体框架上下文。 理想情况下,这可以使用像Microsoft UnitNinject这样的DI框架来完成,当然你也可以手动完成。


<强> Singltons吗

你可能会问自己,这对你的单身人士来说是不是一个好主意。

我有一个类似的问题,因此在一个&#34; MVVM&#34;上询问了Brian Noyes(微软MVP)。在pluralsight网站上的课程。

在他的回复中,他写道:&#34; ...我的大多数客户服务都是单身人士,并且在应用程序的生命周期中生活。&#34;

因此,对于客户服务,可以单独使用。