在单元测试中连接到localDb会引发异常

时间:2014-07-25 21:41:54

标签: c# .net entity-framework localdb

我有一个使用EF6.1与Sql Server数据库通信的VS2013项目。到目前为止,我一直在使用Effort内存数据库运行一些自动化测试。

我正在尝试使用Sql Server的LocalDb,而我遇到了一些我不明白的问题。

  • 从VS的服务器资源管理器中,我创建了一个与LocalDb数据库的新连接,并通过它创建了一个新数据库,然后
  • 我在服务器资源管理器中调出了数据库中的属性窗口,并将连接字符串复制到我的剪贴板,然后
  • 我将此连接字符串粘贴到我的测试程序集的App.config的ConnectionString元素中,
  • 我参加了其中一项测试。

我明白了:

System.ArgumentException: "Keyword not supported: 'data source'".

我的连接字符串很简单:

<add name="MyDbContext" 
    connectionString="Data Source=(localdb)\v11.0;Initial Catalog=localDb;Integrated Security=True" 
    providerName="System.Data.EntityClient"
    />

我的代码同样简单:

[TestClass]
public class TestCustomers
{
    private MyDbContext myDbContext = null;

    private IEnumerable<customer> defaultCustomers = new []
        {
            new customer{customerid = "Customer 1"},
            new customer{customerid = "Customer 2"},
            new customer{customerid = "Customer 3"},
        };

    [TestInitialize]
    public void init()
    {
        this.myDbContext = new MyDbContext();

        foreach (var customer in this.defaultCustomers)
            this.myDbContext.customers.Add(customer);
        this.myDbContext.SaveChanges();
    }

    [TestMethod]
    public void testAllCustomers()
    {
        var customers = this.myDbContext.customers;
        var customerList = customers.ToList();
        Assert.IsTrue(customerList.Count == 3);
    }
}

关于可能出错的任何想法?

1 个答案:

答案 0 :(得分:1)

您已将提供商指定为System.Data.EntityClient而非System.Data.SqlClient。这两种都需要不同的连接字符串格式。

确定使用内容的一个很好的来源是http://www.connectionstrings.com