DbContext nicht Anschluss halten öffnen für re-use

Ich versuche ein vorhandenes Datenbank-Verbindung, so dass ich tun kann, mehrere Datenbank-Operationen unter Verwendung eines TransactionScope ohne Berufung auf MSDTC.

Entity Framework (mit der neuen DbContext - API in der Version 4.1) scheint nicht zu wollen, halten Sie ein explizit geöffnet Verbindung geöffnet. Die alten ObjectContext API hält die Verbindung offen wie erwartet und dokumentiert.

Da die DbContext API einfach verwendet ObjectContext unter der Haube, ich hätte erwartet das gleiche Verhalten. Weiß jemand, ob diese änderung beabsichtigt ist oder ein bekanntes Problem? Ich finde, es ist nicht dokumentiert irgendwo.

public void ConnectionRemainsOpen()
{
    using (var context = new TestDataContext())
    {
        try
        {
            Assert.AreEqual(ConnectionState.Closed, context.Database.Connection.State);

            context.Database.Connection.Open();

            var firstRecord = context.Table3.FirstOrDefault();

            //this Assert fails as State == ConnectionState.Closed
            Assert.AreEqual(ConnectionState.Open, context.Database.Connection.State);

            var newRecord = new Table3
            {
                Name = "test",
                CreatedTime = DateTime.UtcNow,
                ModifiedTime = DateTime.UtcNow
            };

            context.Table3.Add(newRecord);

            context.SaveChanges();

            //this Assert would also fail
            Assert.AreEqual(ConnectionState.Open, context.Database.Connection.State);
        }
        finally
        {
            if (context.Database.Connection.State == ConnectionState.Open)
                context.Database.Connection.Close();
        }
    }
}
Wenn Sie eine Assert-nach Open (), aber vor der ersten Abfrage, was ergibt sich dann? Ich Frage mich, ob das problem hier ist eigentlich nur, dass es zurückkehrte, ein falscher Wert, dann lieber tatsächlich dem schließen und erneuten öffnen von verbindungen.
die Behaupten Sie vorschlagen, geht mit einem erwarteten Ergebnis von Open.
Ich weiß, dies ist eine alte post, aber ich war gerade das Lesen Julia Lerman Buch und die syntax, die Sie nutzt, ist Kontext.- Verbindung.Open() (d.h. keine Datenbank zwischen context und Connection). Nur so ein Gedanke.

InformationsquelleAutor GWB | 2011-07-19

Schreibe einen Kommentar