也许是一个简单的问题,但我找不到答案。我有一个Web表单,我在其中声明我的dbContext。但是,当页面执行回发时,它会覆盖dbContext并丢失对象跟踪。在我准备好处理dbContext之前,如何保持dbContext的安全?
答案 0 :(得分:5)
使用DbContext的建议模式是为每个HTTP请求实例化一个新的DbContext,并在该特定请求的持续时间内使用该实例。
您不应该尝试跨HTTP请求保留DbContext的实例。
答案 1 :(得分:4)
您不得在请求之间重复使用dbContext
!
正确使用的模式是为每个HTTP请求创建一个新对象(无论是否回发)
using (var context = new MyDbContext())
{
...
}
<强>为什么吗
因为DbContext
它是一个轻量级结构,但更重要的是它不是线程安全的。
如果要更新回发上的内容,请使用相同的模式,例如
object productId = //get it from request
using (var context = new MyDbContext())
{
//that's your old product
var product = context.Select(p=>p.Id == product.Id).FirstOrDefault();
}