我正在使用EF 6.1.0版本。
我有以下自定义的DBContex对象,命名为DBEntites。
public partial class DbEntities : DbContext
{
public DbEntities()
: base("name=DbEntities")
{
////Configuration.LazyLoadingEnabled = true;
////Configuration.ProxyCreationEnabled = false;
}
//// I have ALL Entites added as below
////public virtual IDbSet<CCode> CCodes { get; set; }
}
我对上下文对象执行以下操作
using (var context = new DbEntities())
{
var entitySet = context.Set<T>();
var res = entitySet.Where<T>(predicate).ToList();
if (context.Database.Connection.State == ConnectionState.Open)
{
context.Database.Connection.Close();
}
return res;
}
但是在处理完上下文对象后,我仍然可以看到一个活动的数据库连接。在连接状态条件下,我可以看到该连接已关闭(该连接从未为真)。
我正在使用以下查询来查看SQL上的连接。
select db_name(dbid) , count(*) 'connections count'
from master..sysprocesses
where spid > 50 and spid != @@spid
group by db_name(dbid)
order by count(*) desc
以下语句会增加 SQL 连接计数。但即使在处理完毕后也没有减少连接计数,也就是说,在 using 块执行完毕后应该关闭连接。
var res = entitySet.Where<T>(predicate).ToList();
任何帮助都将不胜感激。