ASP.NETMVC5项目。
我知道使用EF context对象的最佳实践如下
using(var context = new ContextDB())
{
}
但我正在处理一个现有的大型项目,它没有使用这种做法。
该项目使用以下模式
public abstract class BaseService
{
private static ContextDB _data { get; set; }
public static ContextDB Data
{
get
{
if (_data== null)
_data= new ContextDB();
return _data;
}
}
}
事实上,因为这个模式,我收到了这个
exception
(有时,不总是)
Data
属性,并将其替换为的新实例
ContextDB
正如我在问题的开头提到的。
问题是,这是一个非常大的修改,我不会被允许做修改。
问题是,我能在不改变一大堆代码的情况下解决这个问题吗?换句话说,我能通过只在
BaseService
例如,是否有任何事件我可以处理以知道是否执行了任何查询,然后处理ContextDB
public abstract class BaseService
{
public static ContextDB Data
{
get
{
ContextDB _data= new ContextDB();
_data.SqlQueryExecuted += () => { this._data.dispose(); }
return _data;
}
}
}
注:以下为
SaveChanged