[英]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.