【发布时间】:2013-06-27 13:59:18
【问题描述】:
我不太确定Dispose 我的ObjectContext 的正确方法是什么。这是我的设置方式:
public abstract class DataManagerBase<T> where T:ObjectContext
{
protected T _context = null;
public string Message { get; set; }
public DataManagerBase(T context)
{
_context = context;
}
}
要在其他课程中使用它,我正在做类似的事情:
public class Test : DataManagerBase<DataEntities>
{
public Test(DataEntities context)
: base(context){}
public void InsertRecord(Person p)
{
if(_context != null)
{
try
{
//Do insert logic
}
catch(Exception ex)
{
}
}
}
}
我有其他方法使用相同的_context,所以我没有使用using 语句,所以如果抛出异常,我是否应该检查_context 是否不为空然后处理它?基本上我想确保 _context 在我完成后被处理,无论是否有异常。将finally 添加到每个try/catch 会不正确吗?
将此方法添加到我的 DataManagerBase 类中,然后在其他类中调用它就可以了:
public void DisposeContext()
{
if (_context != null)
{
_context.Dispose();
}
}
【问题讨论】:
-
你调用 base 的东西不是继承自任何东西?
-
作为一个快速而肮脏的解决方案,是的,在您的 finally 语句中添加一个空检查和
dispose()方法就可以了。更理想的解决方案是将所有调用封装在using块中以供您使用。 -
@MystereMan - 抱歉已修复。忘记添加了。
-
@BradM - 我听说过 using 语句,不幸的是它不是那样做的,所以现在我必须确保它是关闭的,所以我想如果它不是过度杀戮,我一切都可以结束了吗?
-
@BradM - 在
finally中的每个方法末尾调用 dispose 将意味着您将无法在该对象的同一实例上调用其他方法。
标签: c# asp.net-mvc-3 entity-framework .net-3.5 datacontext