Sto cercando di eseguire questo query per recuperare gli elementi di controllo per specifici tipi di entitàQuery LINQ CRM 2011 non valida: "Invalid 'where' condition. Un membro di entità sta invocando una proprietà o un metodo non valido."
public List<Audit> GetAuditChangesSince(DateTime since, string entityType)
{
return (from a in OrgContext.CreateQuery<Audit>()
where
a.ObjectId != null && a.ObjectId.LogicalName == entityType &&
a.CreatedOn > since
select a).ToList();
}
Il a.ObjectId! = Null & & a.ObjectId.LogicalName problemi == entityType & & clausola sta causando. So .Equals() può causare problemi (quindi ==) e ci sono queste limitazioni al provider LINQ:
Il lato sinistro della clausola deve essere un nome di attributo e il lato destro della clausola deve essere un valore
Il lato sinistro è una proprietà e il lato destro è una costante. .ObjectId.LogicalName è la causa del problema?
Grazie per la risposta. Potresti gentilmente spiegare cosa intendi per "attributo a livello del suolo"? Grazie. – Ryan
Nessun problema! Volevo solo dire che, come hai suggerito nella tua domanda, dal momento che non esiste alcun attributo effettivo sull'entità di revisione per il nome logico/tipo di codice dell'entità a cui è collegato il record di revisione, non c'è modo di filtrare direttamente sull'entità di revisione . In termini di query sul CRM, dobbiamo pensare ai campi di tipo "EntityReference" come solo interrogabili dalle loro proprietà "Id". I metadati del tipo di record associato a quell'Id sono estratti da noi e non direttamente interrogabili in questa istanza. Fammi sapere se posso chiarire ulteriormente! – GotDibbs
Capito. Molte grazie! – Ryan