Редактировать: обновленное описание проблемы на основе тестирования - 12 сентября 2011 г.
У меня есть этот запрос, который выдает исключение NotSupportedException («Указанный метод не поддерживается.») При каждом вызове.ToList ().
IQueryable<FileDefinition> query = db
.FileDefinitions
.Include(x => x.DefinitionChangeLogs)
.Include(x => x.FieldDefinitions.Select(y => y.DefinitionChangeLogs)) // bad
.Include(x => x.FieldDefinitions.Select(y => y.FieldValidationTables)) // bad
.Where(x => x.IsActive);
List<FileDefinition> retval = query.ToList();
Если я закомментирую какую-либо строку, которую я прокомментировал как «плохую», запрос будет работать.Я также попытался включить разные вложенные объекты в мою объектную модель с тем же эффектом.Включение любых 2 вызовет сбой.Под вложенностью я подразумеваю свойство навигации свойства навигации.Я также пытался использовать методы .Include со строковым путем: тот же результат.
Моя структура таблицы выглядит следующим образом:
Это использует MySQL 5.1 (очевидно, таблицы InnoDB) в качестве хранилища базы данных с MySQL Connector / NET 6.3.4.
Итак, мой вопрос: почему это не работает?
Примечание: я могу заставить его работать, если я явно загружаю связанные объекты, как в этой ссылке .Но я хочу знать, почему EF ненавидит мою модель данных.
ОТВЕТ: MySQL, Connector, по-видимому, не способен обрабатывать 2-е вложенное включение сущности.Выдает исключение NotSupportedException, а не .NET EF.Та же самая ошибка также присутствовала, когда я пытался сделать это, используя EF4.0, но мои исследования в то время привели меня к мысли, что проблема возникла из-за самосопровождения сущностей.Я попытался обновить до последней версии Connector, но он начал вызывать ошибку Out of Sync .Это еще одна причина для меня ненавидеть MySQL.