首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架- NotSupportedException

实体框架- NotSupportedException
EN

Stack Overflow用户
提问于 2011-06-02 00:19:05
回答 2查看 454关注 0票数 1
代码语言:javascript
复制
var depts = ctx.Departments
            .OrderBy(d => d.deptName)
            .Select(d => d.deptNo);

foreach (int deptNumber in depts) {
    var deptReports = from d in ctx.Departments
                      join r in matchingIncidents on d.deptNo equals r.deptNo
                      where r.deptNo == deptNumber
                      select r;

    int deptReportsCount = deptReports.Count();

我完全被弄糊涂了!关于这个错误的所有问题都要求对原语字段(比如I)使用==,我正在这么做。我对此查询所做的任何操作都会生成异常。完全相同的代码以前是有效的,但我不知道我对它做了什么!有人能给我解释一下发生了什么事吗?

此外,我还记得有一个EntityFramework类,它的方法允许您在查询中转换对象(例如日期),有人知道这个类是什么吗?

更新:

下面是我所做的更改(现在可以用了)。

代码语言:javascript
复制
var deptReports = from r in matchingIncidents
                  join d in ctx.Departments on r.deptNo equals d.deptNo
                  where r.deptNo == deptNumber
                  select r;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-02 00:40:08

matchingIncidents看起来像是复杂类型的本地集合(因为您使用的是r.deptNo)。这在LINQ to Entities中是不允许的。你可以试着这样做:

代码语言:javascript
复制
foreach (int deptNumber in depts) {
    var deptReports = from d in ctx.Departments
                      join r in matchingIncidents.Select(m => m.deptNo)
                          on d.deptNo equals r
                      where r == deptNumber
                      select r;

int deptReportsCount = deptReports.Count();

matchingIncidents.Select(m => m.deptNo)现在是原语类型的本地集合,而deptReportsint的序列(假设deptNo的类型为int)。但是对于计算产生的元素,它应该仍然是好的。

编辑

并且您可能正在搜索静态EntityFunctions类:

http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.aspx

票数 2
EN

Stack Overflow用户

发布于 2011-06-02 00:23:10

问题可能是:

代码语言:javascript
复制
join r in matchingIncidents on d.deptNo == r.deptNo
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6204428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档