我用
if ((tran.Connection != null) && (tran.Connection.State != ConnectionState.Closed))
{
tran.Connection.Close();
tran.Connection.Dispose();
}关闭连接 后, 连接还在
using( DbConnection con = db.CreateConnection())
{}
才能真正关闭连接, 这是为什么
if ((tran.Connection != null) && (tran.Connection.State != ConnectionState.Closed))
{
tran.Connection.Close();
tran.Connection.Dispose();
}关闭连接 后, 连接还在
using( DbConnection con = db.CreateConnection())
{}
才能真正关闭连接, 这是为什么
db.CreateConnection()
DbConnection 这个是数据库连接
DbTransaction 这个是事务。DbConnection 有没有关闭,看属性state
第一种写法,你调用close所以连接关闭了,但只是关闭了,对象还在。
第二种写法,你使用了using,using块结束时会隐式调用Dispose,所以连接不存在了。
第一种写法要连接不存就得手动调用Dispose。
这下说得够明白了吧。
tran.Connection.Dispose();
的确是关闭和释放事务指向的链接。
不过你的tran和DbContext是指向同一个链接吗?
tran.Connection.Dispose();
的确是关闭和释放事务指向的链接。
不过你的tran和DbContext是指向同一个链接吗?
我能确定是同一个连接