实体框架投射问题

时间:2015-04-09 19:56:37

标签: entity-framework

我有实体框架问题。我有这个代码,其中MyType2派生自MyType1:

var EF = AppDbContext.Current;
var result = EF.Set<MyType1>().Where(
  x => x.Type == "MyType2" &&
  EF.Set<MyType2>().Any(y => y.Code == ((MyType2)x).Code)
);

当我运行它时,它会抛出“NotSupportedException&#39;” 无法投射类型&#39; MyType1&#39;输入&#39; MyType2&#39;。 LINQ to Entities仅支持转换EDM原语或枚举类型。

如何正确地将MyType1强制转换为MyType2?

1 个答案:

答案 0 :(得分:0)

并非每个MyType1都是MyType2类型,但是,每个MyType2都是MyType1的类型。这就是为什么你不能(也不应该)将MyType1实例转换为MyType2。

在这种情况下,您可以使用.OfType<>,这是一个示例,并且不确定是否会100%为您工作,但可能会提出一个想法:

var mytype2Instances = dbcontext.MyType1.OfType<MyType2>().List();