簡體   English   中英

EF Linq包含多個字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM