无法投放类型'声明'输入'ClaimDetail'。 LINQ to Entities仅支持转换EDM原语或枚举类型

时间:2017-03-07 17:30:38

标签: entity-framework linq linq-to-entities

我遇到了EF6和LINQ to Entities方法的问题,因为我无法从一个类Claim转换为派生类ClaimDetail。我确信这个演员阵容是有效的,但我不知道如何使用语法来使演员工作。

模型的相关部分如下所示:

// Claim.cs
public class Claim
{
    public int Id { get; set; }
    // ..other properties
}

// ClaimDetail.cs
public class ClaimDetail : Claim
{
    public string ClaimRef { get; set; }
    // ..other properties
}

我有另一个类Request,看起来像这样:

// Request.cs
public class Request
{
    public Claim Claim { get; set; }
    // ..other properties
}

这些类构成了上下文的一部分,如下所示:

// Context.cs
public DbSet<ClaimDetail> Claims { get; set; }
public DbSet<Request> Requests { get; set; }

现在,我想基于Request的属性对ClaimDetail s的LINQ查询进行排序。我有这个:

sorted = intermediate.OrderBy(r => ((ClaimDetail)r.Claim).ClaimRef);

其中intermediateIQueryable<Request>。但是,在尝试实现此查询时,我收到以下消息:

Unable to cast the type 'Claim' to type 'ClaimDetail'. LINQ to Entities only supports casting EDM primitive or enumeration types.

我怎样才能这样做,而无需在中间结果上调用ToList()?那太贵了。

0 个答案:

没有答案