c# - Blazor 创建服务,从 SQL Server 存储过程中提取数据
问题描述
谈到 Blazor 和 C#,我是个菜鸟。
我正在尝试创建一个简单的服务。简单的过程,包括运行存储过程,并在表中显示其结果。我从简单的开始,只需确保该过程运行即可。
这是我的服务的样子:
public class ACheckerService : IACheckerService
{
// Database connection
private readonly SqlConnectionConfig _config;
public ACheckerService(SqlConnectionConfig config)
{
_config = config;
}
public async Task<IEnumerable<AChecker>> GetAllExceptions()
{
IEnumerable<AChecker> exceptions;
using (var conn = new SqlConnection(_config.Value))
{
exceptions = await conn.QueryAsync<AChecker>("Auto.GetAll", commandType: System.Data.CommandType.StoredProcedure);
}
return exceptions.ToList(); ;
}
}
我创建了AChecker
模型类,其中包含要由存储过程拉入的字段。只有4个字段。
完成此操作后,我添加了一个 Blazor 组件 ( .Razor
)
这就是我的代码的样子:
@page "/Data/Auto"
@using AChecker.Data
@inject IACheckerService CheckerService
<h3>Auto</h3>
<p>This component demonstrates Auto Exceptions</p>
@if (aChecker is null)
{
<p><em>Loading....</em></p>
}
else
{
<p><em>Data....</em></p>
}
@code {
private IEnumerable<AChecker> aChecker;
protected override async Task OnInitializedAsync()
{
aChecker = await CheckerService.GetAllAutoExceptions();
}
}
我在 Startup.Cs 中添加了此服务,例如:
services.AddSingleton<ACheckerService>();
上面的代码是否有任何问题,或者为什么它不起作用?
我在我的应用程序中添加了这项服务,基本上当我单击菜单时,我希望看到加载或数据(理想情况下,我想创建一个表并从其中的存储过程中填充字段,有4个字段),但是我得到了一堆错误:
InvalidOperationException:无法为 AChecker.Pages.MyPages.Auto 类型的属性 CheckerService 提供值。没有 AChecker.Data.IACheckerService 类型的注册服务
解决方案
尝试使用此重载注册服务,而不是指定接口及其具体实现:
services.AddSingleton<IACheckerService, ACheckerService>();
推荐阅读
- android - 无法在颤动的WebView中访问gps坐标
- excel - Excel:如何从筛选功能中排除错误
- svg - 如何绘制带有点的响应式 SVG 路径?
- ios - 突出显示 MFMessageComposeViewController 中的 SEND 按钮
- html - 谷歌图片上的 data-iml 属性是什么?/ 如何检索谷歌图像相关分数?
- amazon-web-services - WSL2 中的 AWS CLI:“RequestTimeTooSkewed”
- amazon-web-services - 在云形成中将文件传递给 ec2
- php - Laravel 查询哪个性能更高
- python - KMeans 聚类:将结果添加到初始数据集
- php - codeigniter 框架中的 @ 是什么?