我有一个简单的WinForms应用程序,最终将成为一款游戏。现在,我正在处理它的数据访问层,而且我遇到了麻烦。我创建了一个名为DataAccess
的独立项目,在其中,我创建了一个本地.mdf
SQL Server数据库文件。我还创建了一个app.config
文件来存储连接字符串。
这是配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="TBG_Master"
connectionString="Data Source=(localdb)\MSSQLLocalDb;Integrated Security=true;AttachDbFileName=|DataDirectory|\TBG_Master.mdf"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
要从app.config文件中检索连接字符串,我使用的是从this问题中提取的代码。
Assembly service = Assembly.GetExecutingAssembly();
ConnectionStringsSection css = ConfigurationManager.OpenExeConfiguration(service.Location).ConnectionStrings;
string cs = css.ConnectionStrings["TBG_Master"].ConnectionString;
return cs;
当它到达使用字符串作为键拉动连接字符串的行时,它会给我一个空引用异常。检查css.ConnectionString
集合后,它中唯一的连接字符串如下所示:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
这显然不是我app.config
文件中的内容,我知道我的app.config
项目中没有其他DataAccess
文件。在调试之后,我知道它正在查找正确的程序集。
为什么它给我这个连接字符串而不是正确的字符串?
答案 0 :(得分:2)
正如@Amy指出的那样,这是因为连接字符串没有存储在执行程序集app.config文件中。移动后,它现在可以正常工作。感谢您的快速帮助:)
答案 1 :(得分:1)
您还可以使用machine.config文件来保存独立于给定计算机的任何应用程序的连接字符串。这样他们就不必在任何app.config文件中,因为所有应用程序都会自动读取他们正在执行的机器上的machine.config文件。