Sorry für die schlechte Titel ... Dieser ist wahrscheinlich mit einem Beispiel am besten erklärt:Entity Framework: Kann nicht „Enthält“ mit Eigenschaft auf ein anderes Objekt verwenden
void Main()
{
IQueryable<ClassA> toLinkTo = context.ClassAs.Where(a => a.Name == "SomeName");
var queryToExecute = context.ClassBs.Where(cb => toLinkTo.Select(ca => ca.Id).Contains(cb.Id));
// This works.
leafNodesWithExternalChildren.ToList();
// This doesn't work.
toLinkTo = new OtherClass(context).LinkedClassAs;
leafNodesWithExternalChildren.ToList();
}
public class OtherClass
{
private MyContext m_Context;
public OtherClass(MyContext ctx)
{
this.m_Context = ctx;
}
public IQueryable<ClassA> LinkedClassAs
{
get
{
// Same as toLinkTo as it was originally declared above.
return this.m_Context.ClassAs.Where(a => a.Name == "SomeName");
}
}
}
Wie kommt das funktioniert, wenn toLinkTo
ist lokal deklariert, aber mit der gleichen IQueryable
als eine Eigenschaft auf ein anderes Objekt nicht? Die Ausnahme, die ich bekommen ist:
Unable to create a constant value of type 'ClassA'. Only primitive types ('such as Int32, String, and Guid') are supported.
Vielen Dank im Voraus.
Dieses 'leafNodesWithExternalChildren' sollte eigentlich' queryToExecute', nicht wahr? – Slauma