实体框架不使用defaultConnectionFactory

时间:2017-03-20 10:22:33

标签: c# entity-framework

我一直在尝试使用Effort来测试我们的一个遗留程序。我按照本指南的说明:https://blog.goyello.com/2016/07/14/save-time-mocking-use-your-real-entity-framework-dbcontext-in-unit-tests/

问题是EffortProviderFactory中的CreateConnection()永远不会被调用。我在Testprojects app.config中用

引用它
<entityFramework>
  <defaultConnectionFactory type="Pmt.Test.EffortProviderFactory, Pmt.Test" >
  </defaultConnectionFactory>
  <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
</entityFramework>

我尝试使用

在我的测试方法中创建产品
using (var model = new DBEntities())
{
    var testProd = new tblProdukte
    {
        nr_Produktnummer = "P1A000001-011"
    };
    model.tblProdukte.Add(testProd);
    model.SaveChanges();
}

但它连接到我的sql数据库并使用工厂“System.Data.SqlClient.SqlConnectionFactory”,在我的数据库中插入新产品。我读到我需要删除Test Projects app.config中的连接字符串,但是我的DbContext有一个空连接并在model.tblProdukte.Add(testProd);崩溃。

使用以下代码

public DBBase(string nameOrConnectionString)
    :   base(Database.DefaultConnectionFactory.CreateConnection(nameOrConnectionString), true)

来自这个问题Entity Framework DefaultConnectionFactory being ignored似乎有效,但是看起来这个函数已被弃用了,如果有更好的方法,我真的不想改变上下文,我更倾向于让EF从我这里读取的app.config。

0 个答案:

没有答案