悪いタイトルで申し訳ありません...これはおそらく例で説明するのが一番です:
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");
}
}
}
toLinkTo
がローカルで宣言されているIQueryable
のに、別のオブジェクトのプロパティとまったく同じものを使用するとうまくいかないのはなぜですか? 私が得る例外は次のとおりです。
Unable to create a constant value of type 'ClassA'. Only primitive types ('such as Int32, String, and Guid') are supported.
前もって感謝します。