Entity Framework не запрашивает производные классы — ошибка в DbOfTypeExpression

У меня есть базовый класс и два производных класса.

Каждый из производных классов реализует тот же тип, что и свойство, с той лишь разницей, что это имя свойства.

К сожалению, я не имею большого влияния на дизайн классов -> они были сгенерированы из файла wsdl.

Затем у меня есть свойство BaseType для инкапсуляции общего свойства. План состоял в том, чтобы использовать это свойство в моих веб-представлениях и т. д.

Я использовал знаменитый "Fruit-Example", чтобы продемонстрировать проблему:

 public class FruitBase
    {
        public virtual int ID { get; set; }


        //
        // The plan is to use this property in mvc view
        //
        [NotMapped]
        public virtual FruitnessFactor Fruitness
        {
            get
            {
                if (this.GetType().BaseType == typeof(Apple))
                    return ((Apple)this).AppleFruitness;
                else if (this.GetType().BaseType == typeof(Orange))
                    return ((Orange)this).OrangeFruitness;
                else
                    return null;
            }
        }
    }

public class FruitnessFactor { }

В моем контроллере MVC следующий запрос работает абсолютно нормально:

return View(context.FruitEntities
                           .OfType<Apple>().Include(a =>a.AppleFruitness)
                           .ToList());

Но в этом нет:

  return View(context.FruitEntities
                                   .OfType<Apple>().Include(a =>a.AppleFruitness)
                                   .OfType<Orange>().Include(o => o.OrangeFruitness)
                                   .ToList());

Сообщение об ошибке, которое я получаю:

DbOfTypeExpression требует аргумента выражения с полиморфным типом результата, который совместим с аргументом типа.

Я использую EF 5.0 RC и подход Code First.

Будем признательны за любую помощь!

7
задан kingdango 14 June 2012 в 17:25
поделиться