繁体   English   中英

Blazor 创建服务,从 SQL 服务器存储过程中提取数据

[英]Blazor creating a service, to pull data from SQL Server stored procedure

对于 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 model class,其中包含要由存储过程引入的字段。 只有 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>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM