也许是一个简单的问题,但我找不到答案。我有一个 web 表单,我在其中声明了我的 dbContext。但是,当页面进行回发时,它会覆盖 dbContext 并且我会丢失对象跟踪。在我准备好处理它之前,如何保证 dbContext 不受更改的影响?
问问题
336 次
2 回答
5
使用 DbContext 的建议模式是为每个 HTTP 请求实例化一个新的 DbContext,并在该特定请求的持续时间内使用该实例。
您不应尝试跨 HTTP 请求保留 DbContext 的实例。
于 2012-08-02T18:55:07.090 回答
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();
}
于 2012-08-02T19:14:40.353 回答