如果要为ClassA制作LinQ to entity表达式,其中A与ClassB有如下关系:
var temp = from p in myEntities.ClassA.Include("ClassB")
where ...
select p;
您将获得一组ClassA:s,其中包含对ClassB的引用。在我的情况下,我真的不需要加载所有ClassB引用,只是其中一些。但我不想循环遍历ClassA:s并单独加载它们,我希望我的数据库操作更少,更大,而不是在这里和那里读取小块。
是否可以对包含哪些引用进行某种限制,或者你必须接受这种全有或全无的风格?
答案 0 :(得分:1)
是的,您应该project而不是Include
:
var from p in myEntities.ClassA
where ...
select new
{
ClassA = p,
ClassBs = from q in p.ClassB
where (something)
select q
};
这只加载指定的ClassB。
答案 1 :(得分:0)
您可以这样做:
var temp = from p in myEntities.ClassA
select new { ClassA = p,
ClassB = p.ClassB.Where(b => b.SomeProp == somevalue) };