[英]How to add include in Generic repository pattern in Ef Core?
Net core 和 efcore db 第一種方法。 我有兩張桌子。 第一個表是 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 的關系 Country 有字段 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.