«Вызов« Read », когда устройство чтения данных закрыто, не является допустимой операцией.», Но только для одного из путей Include - PullRequest
2 голосов
/ 27 июля 2011

Я использую Entity Framework в C # с серверной частью MySQL. Вот проблемный участок кода:

using (var entities = new myEntities()) {
    Parties = new ObservableCollection<t_party>(
        entities.SalesParties
            .Include("SalesReps")
            .Include("InventoryReservation")
            .Include("InventoryReservation.InventoryAssignment")
            .Include("InventoryReservation.InventoryAssignment.Inventory")
            .ToList()
    );
}

Когда код запускается, я получаю сообщение об ошибке: «Вызов« Read », когда устройство чтения данных закрыто, не является допустимой операцией». Интересно то, что если я удаляю .Include ("SalesReps"), он работает просто отлично. SalesReps и InventoryReservation имеют кратность 0..1 от конца SalesParty и * от другого конца.

Я использую Entity Framework 4.1 с библиотекой MySQL Connector Net 6.3.7. Сначала я попробовал 6.4.x, но столкнулся с некоторыми другими проблемами между ним и Entity Framework, и мне пришлось откатиться.

Поистине загадочно то, что я недавно сменил ноутбук, и на старом он работал нормально! Старый работал под управлением Windows 7 на 32-битном процессоре, новый 64-битный. Не уверен, повлияет ли это на использование разных библиотек, но это единственная другая переменная, о которой я могу подумать.

1 Ответ

0 голосов
/ 26 сентября 2015

Я также получил ту же проблему и обнаружил, что после выполнения блока using переменная entity будет удалена. Поэтому, если вы попытаетесь использовать его снова за пределами блока, вы получите эту ошибку. Чтобы решить эту проблему, создайте переменную сущностей без использования блока, а затем попробуйте запустить код.

...