繁体   English   中英

WinForm项目中EF代码中DbContext的生命周期优先

[英]Lifetime of DbContext in EF code first in WinForm Projects

最近我问了一个问题( 使用连接的POCO而不是EF代码中的断开POCO的CRUD操作 ),并基于此评论( 使用连接的POCO而不是EF代码中的断开POCO的CRUD操作首先 ),现在我想使用连接我的项目中有POCOs ,所以我还有另一个问题。

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

我对么?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM