[英]EF Linq Include multiple strings
因此,我嘗試使用EF Linq檢索(一個或多個)某些實體的子代。 奇怪的是,這不起作用:
public static class DbSetExtension
{
public static IQueryable<T> Include<T>(this IDbSet<T> dbSet, params string[] paths) where T : class
{
foreach (var path in paths)
dbSet.Include(path: path);
return dbSet;
}
}
//Usage: dbSet<Company>().Include(paths: nameof(Company.Projects))
在這種情況下,每個孩子都是空的...但是當我使用它時,它可以工作:
dbSet.Include("Projects");
有人知道為什么嗎? 我該怎么做才能解決這個問題?
解
public static IQueryable<T> Include<T>(this IQueryable<T> queryable, params string[] paths) where T : class
{
foreach (var path in paths)
queryable = queryable.Include(path: path);
return queryable;
}
.Include
實際上不會更改dbSet
任何內容。 它返回一個值,而不修改它被調用的對象。
foreach(var path in paths)
{
dbSet = dbSet.Include(path: path);
}
應該管用。
好吧,這本身就是:
dbSet.Include(path: path);
不會更改dbSet的狀態。
因此,當您返回時,包含不會被“包含”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.