После трех часов отладки и поиска я надеюсь, что у кого-то есть ответ. Entity Framework (используя MySQL) выдает следующее исключение, если я быстро вызываю следующую функцию (например, на 0,1 с.).
System.InvalidOperationException: непредвиденное состояние соединения. При использовании поставщика упаковки убедитесь, что событие StateChange реализовано на обернутом DbConnection.
Однако иногда функция работает без проблем. Исключение вызывается при первом вызове ToList()
:
void InsertOrUpdateMaterials(List<Material> materials)
{
var id = GetUserId();
var materialIds = materials.Select(x => x.MaterialId).ToList();
// Remove old materials from DB
var oldMaterials = Db.Materials.Where(p => p.CreatedBy == id &&
materialIds.Contains(p.MaterialId)).ToList(); // exception
Db.Materials.RemoveRange(oldMaterials);
Db.SaveChanges();
// Replace previous materials with the new ones in list
Db.Materials.AddRange(materials);
Db.SaveChanges();
}
Как ни странно, эта ошибка никогда не возникала на сервере разработки, поэтому я смотрел на возможные проблемы с конфигурацией безрезультатно.
Иногда, Entity Framework бросает:
System.Data.Entity.Core.EntityCommandExecutionException: уже открыт DataReader, связанный с этим соединением, который должен быть закрыт первым.
Снова указывая на вызов ToList()
. Любые идеи?