简体   繁体   English

实体框架5-获取不相关/可导航的实体

[英]Entity Framework 5 - Get non related / navigable entities

Here is my case, I just want to query the NON related / navigable properties of an entity 这是我的情况,我只想查询实体的NON相关/可导航属性

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;
}

Why is this not working? 为什么这不起作用?

Throws error: 引发错误:

Unable to create a constant value of type 'SIGERE_DAL.Models.REQUIREMENTS'. 无法创建类型为'SIGERE_DAL.Models.REQUIREMENTS'的常量值。 Only primitive types or enumeration types are supported in this context. 在此上下文中仅支持原始类型或枚举类型。

Thanks 谢谢

Try this, 尝试这个,

IQueryable<REQUIREMENTS> nonRelated = context.REQUIREMENTS.Where(x => x.PROJECT_ID == projectID)
                                                              .Except(context.USE_CASES.Where(useCaseID).REQUIREMENTS);

It is because you are comparing objects. 这是因为您正在比较对象。 EF does not support that. EF不支持。 It only supports comparisons involving primitive types. 它仅支持涉及原始类型的比较。 So you have to rewrite your query, something like: 因此,您必须重写查询,例如:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM