c# - 将 IIncludableQueryable 对象传递给实体框架核心中的 DbSet
问题描述
如何将类型的对象传递IIncludableQueryable
给DbSet<>
对象?
IQueryable
type 有效,但IIncludableQueryable
在使用Include
and时无效ThenInclude
,
测试方法应该接受一个链接IIncludableQueryable
元素 ( .Include().ThenInclude()
)。
测试:
public IQueryable<TEntity> Test<TEntity>(DbSet<TEntity> dbSet, Expression<Func<IIncludableQueryable<TEntity, object>>> query) where TEntity : class => dbSet.Include(query);
调用者示例:
return Test<Site>(dbSet, .ThenInclude(app => app.Client)
.ThenInclude(cl => cl.Country)
.ThenInclude(co => co.Culture)
.Include(st => st.App)
.ThenInclude(app => app.ServiceType)
.Include(st => st.CORSEntries)
.Include(st => st.DataConnection)
.Include(st => st.Features)
.ThenInclude(ft => ft.Cultures)
.ThenInclude(clt => clt.Culture)
.Include(st => st.MetaEntries)
.ThenInclude(mt => mt.Culture)
.Include(st => st.Views)
.ThenInclude(vw => vw.MetaEntries)
.ThenInclude(mt => mt.Culture));
解决方案
经过一番阅读,我找到了解决方案。
public async Task<IQueryable<ISite>> Site(Expression<Func<Site, bool>> predicate)
{
var query = this.DbSet.Include(st => st.App)
.ThenInclude(app => app.Client)
.ThenInclude(cl => cl.Country)
.ThenInclude(co => co.Culture)
.Include(st => st.App)
.ThenInclude(app => app.ServiceType)
.Include(st => st.CORSEntries)
.Include(st => st.DataConnection)
.Include(st => st.Features)
.ThenInclude(ft => ft.Cultures)
.ThenInclude(clt => clt.Culture)
.Include(st => st.MetaEntries)
.ThenInclude(mt => mt.Culture)
.Include(st => st.Views)
.ThenInclude(vw => vw.MetaEntries)
.ThenInclude(mt => mt.Culture)
.Where(predicate);
return await Exec(query);
}
基地:
protected async Task<IQueryable<TImplementation>> Exec(IQueryable<TImplementation> query)
{
return await query.ToQueryableAsync();
}
ToQueryableAsync扩展:
public static async Task<IQueryable<TSource>> ToQueryableAsync<TSource>(this IQueryable<TSource> source) where TSource : IAssetsBase
{
var result = await source.ToListAsync();
return result.AsQueryable();
}
推荐阅读
- reactjs - 反应光滑的轮播隐藏直到所有图像加载
- node.js - 我正在尝试创建一个反应应用程序,但它给出了这个错误
- pandas - 把下个月开始作为前几个月结束熊猫
- mongodb - flask_pymongo:PyMongo vs MongoClient:[SSL:CERTIFICATE_VERIFY_FAILED]
- python - 将数字标签转换回原始字符串
- r - 在闪亮的应用程序 R 的 tabitem 部分添加图像
- java - 在 Visual Studio 代码中为 system.out.println 创建快捷方式
- c - 如何将 mmap “翻译”为 Windows ABI?
- mysql - MySql中列值组合的一个实例
- reactjs - 如何使用 ReactJS 在 OpenLayer6 中使弹出窗口工作?