Value cannot be null: connection while testing database
You're calling Commit
and then Rollback
, but the comments point that mistake out.
The error isn't very intuitive, I mean, an ArgumentNullException
should never work its way out of an SDK from down the stack.
But I've had this when I've accidentally reused the same transaction instance, or called Commit
twice, or tried to rollback twice in layered error recovery logic.
KSHMR
Updated on June 24, 2022Comments
-
KSHMR almost 2 years
I'm trying to run integration tests for my ASP.NET MVC application using Entity Framework 6.
The error I get is
System.Data.Entity.Core.EntityException: The underlying provider failed on Rollback. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: connectionThe code looks like this:
Database.SetInitializer(new PrimaryInitializerTest()); _context = new PrimaryContextTest(); _context.Database.Initialize(true); using (var dbt = _context.Database.BeginTransaction()) { dbt.Commit(); dbt.Rollback(); }
I also tried having an
dbt.UnderlyingTransaction.Connection.Open()
call just below the using statement, and adbt.UnderlyingTransaction.Connection.Close()
call just below the call toRollback()
. That gave me the errorConnection is not closed
.PrimaryInitializerTest
classprotected override void Seed(PrimaryContextTest context) { // (...) Input some values base.Seed(context); }
PrimaryContextTest
classpublic 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>(); } }
Connection string
<add name="PrimaryContextTest" connectionString="Data Source=(LocalDb)\mssqllocaldb;Initial Catalog=PrimaryContextTest;Integrated Security=SSPI;AttachDbFilename=|DataDirectory|\PrimaryContextTest.mdf" providerName="System.Data.SqlClient" />
Context string
<context type="fcon.DAL.Tests.PrimaryContextTest, fcon, Version=1.0.0.0, Culture=neutral"> <databaseInitializer type="fcon.DAL.Tests.PrimaryInitializerTest, fcon" /> </context>
What could I be doing wrong?
Might mention that the database doesn't exist in the
App_Data
folder...