环境:Visual Studio 2017
.Net Framework 4.6.1
更新 我道歉,我没有提到我正在使用UnitTesting项目进行集成测试。所以看起来我也需要app.config,对吗?
使用以下内容时,我收到连接字符串的意外值:
C#.Net Framework Library
string connStr = ConfigurationManager.ConnectionStrings["test123"].ConnectionString;
的app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
</connectionStrings>
</configuration>
我搜索了整个解决方案,找不到任何对
的引用\ SQLEXPRESS
调试期间连接字符串的值
{data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}
答案 0 :(得分:2)
您需要将connectionStrings部分添加到UnitTest Project的app.config中。
答案 1 :(得分:0)
值可能来自更高的web.config(比如machine.config),虽然同样的值test123
很奇怪(如果你尝试添加一个值&#,你会收到错误39;已定义)。在添加新值之前,您可以使用<clear />
清除以前设置的任何值:
<connectionStrings>
<clear />
<add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
</connectionStrings>
答案 2 :(得分:0)
.
表示将使用同一台机器中的命名管道(共享内存)协议建立连接(不需要通过TCP / IP堆栈)
您可能还需要以下主题
SQL Server Connection Strings - dot(".") or "(local)" or "(localdb)"
Change a Sql-Server (express) from a named instance to localhost?
Can't connect to localhost, but can with computer name in SQL Server 2008
答案 3 :(得分:0)
SQLEXPRESS是对本地SQL Server Express实例的引用,并使用“。”因为服务器名称相当于声明'使用我的本地SQL服务器'。
如果SQL Server Express被注册为您的默认本地SQL服务器,那么在您的连接字符串内部引用“。”将被理解为对'SQLEXPRESS'的引用。因此,在调试时为服务器名称生成的值。
答案 4 :(得分:0)
aspnetdb.mdf 是使用ASP.NET应用程序服务时的默认数据库。你不会在你的代码中找到它。
尝试将您的连接字符串放在 web.config 文件
中<configuration>
<connectionStrings>
<add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
</connectionStrings>
</configuration>
如果您使用的是SQL Express,请使用“。\ SQLEXPRESS”作为数据源
<configuration>
<connectionStrings>
<add name="test123" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
</connectionStrings>
</configuration>
答案 5 :(得分:0)
所以我没有提到我正在通过单元测试项目进行集成测试。我错误地将app.config放在我的数据访问项目而不是单元测试项目中。