全局查询数据库
Query database globally
我正在处理 Blazor Web 应用程序并遇到了一个问题。使用本地 SQL 服务器时这不是问题,但是在发现数据库世界并付出一些代价后,我意识到我可能遇到了一些设计问题。
我正在从不断更新的数据库中请求数据。我想查询它,假设每 10 分钟查询一次可能的更新。目前,我在需要数据的每个页面上都这样做。
这边。其中一个页面的隐藏代码示例:
private List<DataRecord> DataRecords { get; set; } = new List<DataRecord>();
this.DataRecords = await this.HttpClient.GetFromJsonAsync<List<DataRecord>>("api/DataRecord");
this.FilteredDataRecords = this.DataRecords.Where(w => w.TimeNow.Date == SelectedDate.Value.Date).OrderBy(o => o.TimeNow).ToList();
如果不需要为数据库流量付费,这可能会很好用。但是,如果我需要从 5 个页面请求这个,那么请求是 5 倍。有没有办法让一些“全局”class 每 10 分钟调用一次数据库更新,我将有可能从 Web 应用程序的每个页面访问此数据,而无需每次都进行查询页数?
还是在每个页面上添加一些 update = refresh 按钮更好?想想每次用户访问页面时查询是否比每 10 分钟调用更新计时器更“便宜”?
我会使用 javascript 计时器,而不是带有 C# 计时器的服务。然后,您可以让 javascript 使用 JS Interop 调用 Blazor data-loading 方法。除了 Blazor 中内置的 JS Interop 之外,不需要 DI。
我正在处理 Blazor Web 应用程序并遇到了一个问题。使用本地 SQL 服务器时这不是问题,但是在发现数据库世界并付出一些代价后,我意识到我可能遇到了一些设计问题。
我正在从不断更新的数据库中请求数据。我想查询它,假设每 10 分钟查询一次可能的更新。目前,我在需要数据的每个页面上都这样做。
这边。其中一个页面的隐藏代码示例:
private List<DataRecord> DataRecords { get; set; } = new List<DataRecord>();
this.DataRecords = await this.HttpClient.GetFromJsonAsync<List<DataRecord>>("api/DataRecord");
this.FilteredDataRecords = this.DataRecords.Where(w => w.TimeNow.Date == SelectedDate.Value.Date).OrderBy(o => o.TimeNow).ToList();
如果不需要为数据库流量付费,这可能会很好用。但是,如果我需要从 5 个页面请求这个,那么请求是 5 倍。有没有办法让一些“全局”class 每 10 分钟调用一次数据库更新,我将有可能从 Web 应用程序的每个页面访问此数据,而无需每次都进行查询页数?
还是在每个页面上添加一些 update = refresh 按钮更好?想想每次用户访问页面时查询是否比每 10 分钟调用更新计时器更“便宜”?
我会使用 javascript 计时器,而不是带有 C# 计时器的服务。然后,您可以让 javascript 使用 JS Interop 调用 Blazor data-loading 方法。除了 Blazor 中内置的 JS Interop 之外,不需要 DI。