我一直在尝试使用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。