![](/img/trans.png)
[英]The source IQueryable doesn't implement IDbAsyncEnumerable when trying to mock
[英]In entity framework 6 SelectMany to Join option for query throwing error The source IQueryable doesn't implement IDbAsyncEnumerable<MyModel>
如主題中所述,我有以下查詢引發錯誤
public async Task<IEnumerable<MyModel>> GetDataAsync()
{
return await _context.baseTable.SelectData().AsNoTracking().ToListAsync();
}
public static IQueryable<MyModel> SelectData(this IQueryable<relet> baseTable)
{
return baseTable
.Where(h => h.table1 != null && h.table1.table2 != null)
.Select(lev => new {
table3Collection = lev.table1.table2.table3, //table3 is ICollection
Table5Key = lev.table5 != null ? lev.table5.id : null,
Table4Key = lev.table1.table2.table4 != null ? lev.table1.table2.table4.id : null,
}).ToList()
.SelectMany(x => {
return x.table3Collection.Select(h => new MyModel() {
ContactKey = new Key
{
Id = h.Id,
Type = h.Type
},
Table5Key = x.Table5Key,
Table4Key = x.Table4Key
});
})
.AsQueryable();
}
有人可以告訴我如何在組加入方式中使用相同的 LINQ 查詢嗎? .ToListAsync() 行出現問題
您不能從IEnumerable
創建IQueryable
並使用異步擴展。 實際上,您只需要更正您的查詢並刪除不必要的具體化。
public static IQueryable<MyModel> SelectData(this IQueryable<relet> baseTable)
{
return
from lev in baseTable
from t3 in lev.table1.table2.table3
select new MyModel
{
ContactKey = new Key
{
Id = lev.Id,
Type = lev.Type
},
Table5Key = (int?)lev.table5.Id,
Table4Key = (int?)lev.table1.table2.table4.Id
};
}
請注意,從簡化查詢中我們可以看到未使用t3
。 這意味着我們只是復制記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.