为什么SqlConnection会忘记数据库类型

Cri*_*ole 0 .net c# sqlconnection

我最近发布了(并且当我确定问题与实际问题无关时立即删除)一个关于SqlConnection在"ChangeDatabase"范围结束时丢失其数据库信息的问题.例:

    //Other code...
    dbConn = new SqlConnection(dbConnBuilder.ConnectionString);
    dbConn.Open();
    dbConn.ChangeDatabase(currentDatabase);
    dbConn.Close();
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. SqlConnection当你只需要一个给定类型的一个连接时,保持一个对象并在需要时打开和关闭它被认为是不好的做法吗?
  2. 为什么在ChangeDatabase(方法不是变量)之后dbConn.Database 记得'超出范围'?(哎呀,我不知道可以了解范围的方法).currentDatabaseChangeDatabase

我的连接字符串是:

Data Source=server.name.com;Persist Security Info=True;User ID=username;Password=password
Run Code Online (Sandbox Code Playgroud)

谢谢大家,让我知道,如果我能给你更多的信息,仍然学习使用SO

Ste*_*dit 5

调用Close()完全破坏了对象,所以你不应该在之后阅读它的任何属性.

事实上,甚至应该一个"后",因为你不应该打电话Close().相反,在一个using块中实例化连接,这样它就会调用Dispose(),它会做同样的事情Close(),但无论你如何离开块,都可以保证这样做.