1

这是我的情况,我只想查询实体的非相关/可导航属性

public IQueryable<REQUIREMENTS> GetNotAssociatedRequirements(decimal projectID, decimal useCaseID)
{
    IQueryable<REQUIREMENTS> nonRelated = context.REQUIREMENTS.Where(x => x.PROJECT_ID == projectID)
                                                              .Except(context.USE_CASES.Find(useCaseID).REQUIREMENTS);
    return nonRelated;
}

为什么这不起作用?

抛出错误:

无法创建“SIGERE_DAL.Models.REQUIREMENTS”类型的常量值。此上下文仅支持原始类型或枚举类型。

谢谢

4

2 回答 2

0

这是因为您正在比较对象。EF 不支持。它只支持涉及原始类型的比较。所以你必须重写你的查询,比如:

var nonRelated = 
   context.REQUIREMENTS.Where(r => r.PROJECT_ID == projectID)
                       .Where(r => 
                       !(
                           context.USE_CASES
                                  .Where(uc => uc.UseCaseID == useCaseID)
                                  .SelectMany(uc => uc.REQUIREMENTS)
                                  .Select(r1 => r1.Id)
                        ).Any(id == r.Id)
于 2013-06-11T09:20:20.723 回答
0

尝试这个,

IQueryable<REQUIREMENTS> nonRelated = context.REQUIREMENTS.Where(x => x.PROJECT_ID == projectID)
                                                              .Except(context.USE_CASES.Where(useCaseID).REQUIREMENTS);
于 2013-06-11T04:55:31.030 回答