我有一个基类和两个派生类。
每个派生类的实现相同类型作为属性 - 唯一的区别是属性名称。
可悲的是,我没有在一流的设计多少影响- >他们已经从WSDL文件生成。
然后我对BASETYPE属性封装的共同财产。 该计划是在我的网站的观点等来使用这个属性
我已经使用了著名的“水果例”来说明问题:
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和代码优先的方法。
任何帮助深表感谢!