WinForm项目中首先在EF代码中使用DbContext的生命周期

时间:2013-12-10 08:57:16

标签: c# winforms entity-framework poco dbcontext

最近我问了一个问题(CRUD operations with connected POCOs instead of disconnected POCOs in EF code first),基于此问题和此评论(CRUD operations with connected POCOs instead of disconnected POCOs in EF code first),现在我想在我的项目中使用已连接的POCOs,所以我有另一个问题题。

但我认为,如果我使用视图模型,当我使用DbContext的实例从数据库中获取数据,并将它们映射到视图时,当我想要持久性用户更改时,{{的先前实例1}}(已获取的数据)现在不存在(因为例如当我从我的DAL调用DbContext GetOrders()创建然后处置时)因此我应该管理我的DbContext状态在客户端并将它们复制回新创建的DbContext(在我的DAL的POCOs中)。

我说错了吗?

1 个答案:

答案 0 :(得分:0)

您可以将DbContext变量定义为DAL类上的静态字段以解决此问题。

        private static YourAppContainer _dbContainer;
        public static YourAppContainer DbContext
        {
            get
            {
                try
                {
                    return _dbContainer ?? (_dbContainer = new YourAppContainer());
                }
                catch (Exception ex)
                {
                    throw new Exception(ex);
                }
            }
        }