实体框架:连接字符串在主项目中工作,但不在测试项目中工作

时间:2014-12-09 20:11:28

标签: c# entity-framework

我正在使用EF 6.0代码优先。在我的应用程序中,我使用硬编码连接字符串进行连接:

public class MyDbContext: DbContext
{
      // ...
        public MyDbContext(string connectionString):
            base(connectionString)
     {   }
}
var dbContext = new MyDbContext("Data Source=.\\SQLEXPRESS;Initial Catalog=DatabaseName;Integrated Security=SSPI");

这很好用,我可以访问数据库。但是,在单元测试项目中,我使用相同的连接字符串进行连接,当我第一次尝试访问某些数据时连接失败:

  

初始化字符串的格式不符合规范   从索引0开始

为什么相同的连接字符串在主项目中起作用而在测试项目中不起作用?

1 个答案:

答案 0 :(得分:0)

app.config是错误配置的。

两个项目(主要和测试)中的部分看起来完全相同,除了一个项目。测试项目有一个额外的“参数”部分。

 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlClient" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

从测试项目的app.config中删除“参数”部分后,连接正常。