gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:42:03 24 4
gpt4 key购买 nike

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 Table之间的关系
SitDetails 有字段 siteNo、siteName、CountryId
国家有字段 CountryId 和 CountryName

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

最佳答案

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com