我对页面级实体的实例化有疑问。它的asp.net webform代码隐藏。 一种方式如下:
private Entities _context;
public Entities context
{
get
{
return _context;
}
}
protected override void OnPreInit(EventArgs e)
{
_context = new Entities();
base.OnPreInit(e);
}
如果我需要更新上下文,我只需向每个方法添加var context = new Entities();
;
或者我正在考虑这样的声明:private Entities _context;
然后在每种方法中我只是更新它并直接context.SaveChanges()
我很困惑,这是正确的方式。
答案 0 :(得分:0)
我更喜欢每次实例化一个新的上下文,用using
块围绕它。
如果我需要在一个事务中多次调用一个方法,我将创建一个以上下文作为参数的重载。
private void SaveData(Entities context, object data)
{
context.Data.Add(...);
}
public void SaveData(object data)
{
using(var context = new Entities())
{
SaveData(context, data);
context.SaveChanges();
}
}
public void SaveMultipleData(IEnumerable<object> data)
{
using(var context = new Entities())
{
foreach(var d in data)
{
SaveData(context, data);
}
context.SaveChanges();
}
}