我是EF5和LINQ的新手,并在以下方面苦苦挣扎。
我正在急切的负载情况下工作,我想知道如何最好地编写方法来支持以下内容。
实体A与其他3个城市有关系。
我想要一个返回Listist的方法(没问题) 但我也希望该方法有3个参数,表明我是否要包含其他3个相关实体。
所以,如果所有这三个都被包括在内,那就有效了。
var AA = from e in context.A
.Include( "Bs" )
.Include( "Cs" )
.Include( "Ds" )
where e.......
select e;
如何根据我的方法参数编写它以允许包含或不存在?
答案 0 :(得分:0)
将三个参数bool includeBs
,bool includeCs
和bool includeDs
传递到方法中,然后使用:
DbQuery<A> query = context.A;
if (includeBs)
query = query.Include("Bs");
if (includeCs)
query = query.Include("Cs");
if (includeDs)
query = query.Include("Ds");
var AA = from e in query
where e.......
select e;
作为旁注:对于EF 5,您应该有一个强类型版本的Include
可用,它使用lambda表达式而不是字符串作为参数,如Include(a => a.Bs)
。当您将上面的DbQuery<A>
替换为IQueryable<A>
时,您也可以使用它。