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

标签 c# .net-core ef-core-2.0 db-first

Net core 和 efcore db 第一种方法。我有两张 table 。第一个表是 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);
        }

在下面的代码中我调用上面的方法

 var siteDetails= await this.siteDetailsRepository.GetAsync(x => x.siteNo== siteNo , source => source.Include(???)).ConfigureAwait(false);

下面是siteDetails页面Country表之间的关系 SitDetails 具有字段 siteNo、siteName、CountryId 国家/地区有字段 CountryId 和 CountryName

有人可以帮我在这里编写包含语法吗?任何帮助,将不胜感激。谢谢

最佳答案

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

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);

关于c# - 如何在 Ef Core 中添加包含在通用存储库模式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62283991/

相关文章:

c# - 创建目录后.NET Core控制台应用程序出现UnauthorizedAccessException

pagination - 具有自己数据库的微服务的聚合、排序、过滤和分页

c# - 判断 SQL Server 是否可用的最快方法

c# - itextSharp ColumnText 只显示每个其他 foreach 循环短语

visual-studio - 强制将特定的 nuget 包下载到本地包文件夹

entity-framework - EF Core 3 的 DbContextScope 模式

c# - 我如何知道何时从通用处理程序下载文件?

c# - 每秒更新一次 SQL Server 数据库表

asp.net-core - EF核心2 : Database first with many-to-many (linking table)

c# - 使用包含相同 Entity MVC Core 的 1Entity 创建 Dbo