У меня есть базовый класс и два производных класса.
Каждый из производных классов реализует тот же тип, что и свойство, с той лишь разницей, что это имя свойства.
К сожалению, я не имею большого влияния на дизайн классов -> они были сгенерированы из файла 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.
Будем признательны за любую помощь!