C# 如何在Ef Core中添加包含在通用存储库模式中?

C# 如何在Ef Core中添加包含在通用存储库模式中?,c#,.net-core,ef-core-2.0,db-first,C#,.net Core,Ef Core 2.0,Db First,Net核心和efcore数据库优先方法。我有两张桌子。第一个表是SiteDetails,它包含与SiteDetails相关的列,并根据主键和外键关系引用其他表国家/地区。现在我想把这些国家也包括在内,作为结果的一部分。下面是我的通用方法 public async Task<IEnumerable<T>> GetAsync(Expression<Func<T, bool>> filter = null, Func<IQueryable<T

Net核心和efcore数据库优先方法。我有两张桌子。第一个表是SiteDetails,它包含与SiteDetails相关的列,并根据主键和外键关系引用其他表国家/地区。现在我想把这些国家也包括在内,作为结果的一部分。下面是我的通用方法

public async Task<IEnumerable<T>> GetAsync(Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, params Expression<Func<T, object>>[] includes)
        {
            IQueryable<T> query = this.dbSet;
            foreach (Expression<Func<T, object>> include in includes)
            {
                query = query.Include(include);
            }

            if (filter != null)
            {
                query = query.Where(filter);
            }

            if (orderBy != null)
            {
                query = orderBy(query);
            }

            return await query.ToListAsync().ConfigureAwait(false);
        }
下面是siteDetails页面与国家/地区表之间的关系 SitDetails包含siteNo、siteName和CountryId字段 Country具有字段CountryId和CountryName


有人能帮我写一下这里的include语法吗。任何帮助都将不胜感激。谢谢

当您想要使用GenericRepository时,您应该在初始化时声明类型。如果不使用显式类型(如SiteDetail)初始化GenericRepository,则在您的示例中这是在初始化:

public class SiteDetailService : ISiteService 
{
    private readonly IBaseRepository<SiteDetail> _siteDetailRepository;
    public SiteDetailService(IBaseRepository<SiteDetail> siteDetailsRepository)
    {
        _siteDetailRepository = siteDetailsRepository;
    }
}

谢谢。这就是我需要的。另外,如果我想要orderby,那么x=>x.feildname我需要立即发送
public class SiteDetailService : ISiteService 
{
    private readonly IBaseRepository<SiteDetail> _siteDetailRepository;
    public SiteDetailService(IBaseRepository<SiteDetail> siteDetailsRepository)
    {
        _siteDetailRepository = siteDetailsRepository;
    }
}
   var siteDetails = 
           await this._siteDetailsRepository
                     .GetAsync(x => 
                               x.siteNo == siteNo,  //Conditions         
                               null,                //Orders          
                               x => x.Country)      //Includes
           .ConfigureAwait(false);