很抱歉的坏称号......这一个可能是最好的例子来解释:实体框架:不能使用“包含”与另一个对象属性
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.
感谢。
这'leafNodesWithExternalChildren'实际上应该是'queryToExecute',对不对? – Slauma 2012-04-04 15:30:56