2013-06-11 4 views
1

Voici mon cas, je veux juste interroger les propriétés non liées/navigables d'une entitéEntity Framework 5 - Être non liés/entités navigables

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

Pourquoi ce ne fonctionne pas?

Lance erreur:

Impossible de créer une valeur constante du type 'SIGERE_DAL.Models.REQUIREMENTS. Seuls les types primitifs ou les types d'énumération sont pris en charge dans ce contexte.

Merci

+0

Si vous pouvez fournir vos entités, il serait plus facile de comprendre ce qui s'est passé. – aiapatag

Répondre

0

Essayez ceci,

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

Il est parce que vous comparez des objets. EF ne supporte pas cela. Il ne supporte que les comparaisons impliquant des types primitifs. Donc, vous devez réécrire votre requête, quelque chose comme:

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) 
Questions connexes