我正在尝试使用Entity Framework 6运行我的ASP.NET MVC应用程序的集成测试。我遇到的错误是:
System.Data.Entity.Core.EntityException:底层提供程序在回滚时失败。 ---> System.ArgumentNullException:值不能为空。 参数名称:connection
代码如下:
我还尝试在使用语句下方添加
System.Data.Entity.Core.EntityException:底层提供程序在回滚时失败。 ---> System.ArgumentNullException:值不能为空。 参数名称:connection
代码如下:
Database.SetInitializer(new PrimaryInitializerTest());
_context = new PrimaryContextTest();
_context.Database.Initialize(true);
using (var dbt = _context.Database.BeginTransaction())
{
dbt.Commit();
dbt.Rollback();
}
我还尝试在使用语句下方添加
dbt.UnderlyingTransaction.Connection.Open()
调用,以及在调用Rollback()
下方添加dbt.UnderlyingTransaction.Connection.Close()
调用。这使我得到了错误信息:Connection is not closed
。
PrimaryInitializerTest
类。protected override void Seed(PrimaryContextTest context)
{
// (...) Input some values
base.Seed(context);
}
PrimaryContextTest
类
public class PrimaryContextTest : DbContext
{
public PrimaryContextTest() : base("PrimaryContextTest")
{
Database.SetInitializer(new DropCreateDatabaseAlways<PrimaryContextTest>());
}
public DbSet<Story> Stories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}
}
连接字符串
<add name="PrimaryContextTest"
connectionString="Data Source=(LocalDb)\mssqllocaldb;Initial Catalog=PrimaryContextTest;Integrated Security=SSPI;AttachDbFilename=|DataDirectory|\PrimaryContextTest.mdf"
providerName="System.Data.SqlClient" />
上下文字符串
<context type="fcon.DAL.Tests.PrimaryContextTest, fcon, Version=1.0.0.0, Culture=neutral">
<databaseInitializer type="fcon.DAL.Tests.PrimaryInitializerTest, fcon" />
</context>
我可能做错了什么?
可能需要提到数据库不在App_Data
文件夹中...
Commit
事务后立即进行Rollback
是没有意义的。这肯定是一个错误(SQL Server 也会抛出错误),尽管它不应该是一个空错误。 - Rob