c# - 在加载对话框时在后台从数据库中检索数据
问题描述
我在 WPF 应用程序中使用 Dapper 从数据库中检索几个组合框列表的数据。我希望在后台进行检索;当用户打开第一个组合框时,它将防止出现小延迟。
所以我这样做了:
private Task<IEnumerable<T_Program>> _allTapes;
// Binds to combobox ItemsSource
public IEnumerable<T_Program> Tapes =>
_allTapes.Result.Where(x => x.Program.Equals(Program));
在我的视图模型的构造函数中:
_allTapes = _conn.GetAllAsync<T_Program>();
但我没有得到我想要的“性能提升”。
在调试期间将光标悬停在上面会_allTapes
产生以下描述:
Id = 6722, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"
所以看起来 Dapper 的GetAllAsync
方法实际上并没有执行查询,直到它被Result
从任务中检索强制执行。
如何获得我想要的后台执行?
解决方案
您当前只是将 Task 对象分配给 _allTapes。
尝试
_allTapes = await _conn.GetAllAsync<T_Program>().ConfigureAwait(false);
推荐阅读
- typescript - 从 TypeScript 中的对象数组中提取值的问题
- javascript - 防止内联事件元素的传播?
- typescript - 基于强类型字符串的打字稿组件
- eclipse-rcp - NatTable 1.6 - TreeLayer - 展开/折叠三角形在折叠上面的一行后不跟随它们的行
- azure - DurableOrchestrationClient.CreateCheckStatusResponse 上的自定义域
- sql - SQL Server通过查询父节点属性名返回子节点(值)
- php - php没有将数据插入mysql数据库
- firebase - Firestore 补丁映射值 REST API
- git - Git浅克隆:只有最近X个月有活动的分支
- r - 计算每组中的观察次数