Якуб совершенно прав. Вы не можете создать ни DbContext
, ни EntityConnection
с открытыми DbConnection
, переданными им.
Согласно сообщению Диего Б Веги эта проблема не будет исправлена до выхода EF 6 ( здесь вы можете проголосовать за него)
Обходной путь - открыть уже инициализированный EntityConnection
перед любыми операциями, связанными с ним.
Учитывая ObjectContext
, вы можете открыть EntityConnection
следующим образом:
((EntityConnection)objectContext.Connection).Open();
В случае DbContext
EntityConnection
доступен из базового ObjectContext
. Код может быть таким:
class MyDbContext : DbContext
{
public MyDbContext (DbConnection connection)
: base (connection, contextOwnsConnection: true)
{
((IObjectContextAdapter)this).ObjectContext.Connection.Open();
}
// …
}
class Program
{
public static void Main()
{
var connection = new SqlConnection(CONNECTION_STRING);
using (var database = new MyDbContext(connection))
{
Assert.IsTrue(connection.State == ConnectionState.Open);
}
Assert.IsTrue(connection.State == ConnectionState.Closed);
}
}