EF4.1 multiple nested entity Includes получает NotSupportedException?

Правка: Обновлено описание проблемы по результатам тестирования - 12 сентября 2011 года.

У меня есть запрос, который бросает NotSupportedException ("Указанный метод не поддерживается.") всякий раз, когда я вызываю .ToList().

IQueryable 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 retval = query.ToList();

Если я прокомментирую любую из строк, которые я прокомментировал как "плохие", то запрос работает. Я также попытался включить различные вложенные сущности в мою объектную модель с тем же эффектом. Включение любых 2 приведет к аварийному завершению. Под вложенным я понимаю навигационное свойство свойства навигации. Также я попробовал использовать методы .Include со строковым путем: тот же результат.

Моя структура таблиц выглядит следующим образом:

Db model

Db model 2

Это использование MySQL 5.1 (очевидно, таблицы InnoDB) в качестве хранилища баз данных с коннектором MySQL/NET 6.3.4.

Итак, мой вопрос: почему это не работает?

Примечание: Я могу заставить это работать, если я явно загружу связанные объекты, как в по этой ссылке . Но я хочу знать, почему EF ненавидит мою модель данных.

ОТВЕТ: Очевидно, что MySQL Connector не способен обрабатывать вложенную 2-ю сущность include. Он бросает NotSupportedException, а не .NET EF. Эта же ошибка присутствовала и при попытке использования EF4.0, но мои исследования в то время заставили меня поверить, что проблема заключается в самослеживающихся сущностях. Я попытался обновить коннектор до последнего, но это начало вызывать ошибку Out of Sync . Это еще одна причина , по которой я ненавижу MySQL.

6
задан Kasey Speakman 12 September 2011 в 23:43
поделиться