在将结果返回到控制器之前是否可以过滤存储库模式获取的数据?

Joh*_*n D 0 c# repository-pattern blazor-webassembly

该项目是 C# VS-2022 Blazor WASM,具有用于数据库 API 的 REST-API 存储库模式。

每当我在存储库函数中使用Where()条件时,我都会收到编译错误。

错误 CS1061“DbSet”不包含“GetAwaiter”的定义,并且找不到接受“DbSet”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)

例如在存储库函数中:

returnRecs = (await appDbContext.MOTrip).Where(r => (r.UID_CUSTOMER == uidModel));
Run Code Online (Sandbox Code Playgroud)

我尝试在存储库中进行过滤的原因是因为数据库表“MoTrip”包含数十万条记录。我认为(await appDbContext.MOTrip)在控制器中获取所有记录并遵循各种过滤条件将是浪费。

在此问题中提出的情况下,按 CUSTOMER 进行过滤将是存储库功能获取的记录数的 1/100。

欢迎您的回答和评论。谢谢约翰。

the*_*mee 5

我宁愿在数据库中而不是在内存中进行过滤,这样可以避免从数据库中提取所有 10000 条记录。您可以通过申请.Where来做到这一点DbSet

returnRecs = await appDbContext.MOTrip.Where(r => r.UID_CUSTOMER == uidModel)
                                      .ToListAsync();
Run Code Online (Sandbox Code Playgroud)