我就回答你的第一个问题,第二,三个问题可以用同样的方式解决:
Type type = typeof(SqlConnection);
PropertyInfo property = type.GetProperty("InnerConnection", BindingFlags.NonPublic | BindingFlags.Instance);
SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=master;Integrated Security=True");
conn.Open();
object obj = property.GetValue(conn, null);
int hashcode = obj.GetHashCode();
conn.Close();
获取到的 hashcode 你可以保存下来,然后每次open连接后,你获取一个 hashcode,如果该 hashcode 已经存在,则表示是从连接池复用的,如果不存在,则是新创建的。
1:当前数据库连接是【新创建】的还是【从连接池复用】的?
这个不一定, 如果你使用的数据库连接对象在连接池里面缓存的话, 就先看看连接池里有没有,有的话, 就直接换回链接对象。如果没有那就新建。
2.可以看到,利用性能监视器来监视池来查看;
3.Linq2SQL 是套框架、里面封装了对数据库的访问,同样可用2里面的方法查看。
没办法看...