Аналогично этому вопросу Исключительная ситуация «Неожиданное состояние соединения» Entity Framework
Я добавил событие StateChange, как было предложено, но оно никогда не попадало.
Базовый код:
public ConfigEntities GetContext()
{
context = ((context == null) || (context.Database.Connection.State != System.Data.ConnectionState.Open)) ? GetNewConnection() : context;
return context;
}
private static string efConnectionString = null;
private ConfigEntities GetNewConnection()
{
if (efConnectionString == null)
{
var connectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
const string metaData = "metadata=res://*/ConfigContext.csdl|res://*/ConfigContext.ssdl|res://*/ConfigContext.msl;provider=System.Data.SqlClient;provider connection string=\"";
efConnectionString = metaData + connectionString + ";MultipleActiveResultSets=True;App=EntityFramework\"";
}
ConfigEntities dbContext = new ConfigEntities(efConnectionString);
dbContext.Database.Connection.StateChange += OnConnectionStateChange;
return dbContext;
}
Вызывается здесь:
using (var database = GetContext())
{
return database.Config_PackingBodySealMaterial
.Include("Config_ProductSeriesPackingBodySealMaterial").ToList();
}
Броски
{"Unexpected connection state. When using a wrapping provider ensure that the StateChange event is implemented on the wrapped DbConnection."}
Но я никогда не вижу изменения состояния из Закрытого .
Это первый раз, когда GetContext получает удар.
StateChange не получает удар.
Как вы можете видеть, я добавил предложение, которое воссоздает dbContext, если это закрыто. Это не помогло. Так как это нуль, это уже получало новую копию.