如何使用blazor执行存储过程

问题描述 投票:1回答:1

我一直在寻找一些示例,这些示例表明使用blazor执行存储过程。

到目前为止,我还没有看到与使用blazor执行存储过程相关的任何信息。

stored-procedures entity-framework-core blazor
1个回答
0
投票

在EF Core 3.0中,您可以使用FromSqlRaw扩展方法来执行存储过程。

这是一个有关通过存储过程从数据库获取用户数据的简单工作演示。

用户模型

 public partial class Users
{
    [Key]
    public int PkId { get; set; }
    public string UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Supervisor { get; set; }
    public DateTime CreationDate { get; set; }
    public string CreationUser { get; set; }
}

UserManagementContext.cs

public partial class UserManagementContext : DbContext
{
    public UserManagementContext(DbContextOptions<UserManagementContext> options): base(options)
    {}

    public virtual DbSet<Users> Users { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=UserManagementDb;Trusted_Connection=True;ConnectRetryCount=0");
        }
    }
}

UserService.cs

public class UserService
{
    private readonly UserManagementContext _context;

    public UserService(UserManagementContext context)
    {
        _context = context;
    }

    public async Task<Users[]> GetUsersAsync()
    {
        Users[] u;

        u = _context.Users
            .FromSqlRaw("EXECUTE GetUserByUserId {0}", "User1")
            .ToArray();

        return u;
    }
}

Startup.cs中的ConfigureServices方法

public void ConfigureServices(IServiceCollection services)
    {

        services.AddDbContext<UserManagementContext>();

        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSingleton<WeatherForecastService>();

        services.AddTransient<UserService>();  
    }

Index.razor

@page "/"
@using Models
@using Data
@inject UserService us

<form method="post">
<table class="table">
    <thead>
        <tr>
            <th>ID</th>
            <th>UserID</th>
            <th>Name</th>
            <th>Supervisor</th>
            <th>Ersteller</th>
            <th>Erstelldatum</th>
            <th>Optionen</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var user in users)
        {
            <tr>
                <td>@user.PkId</td>
                <td>@user.UserId</td>
                <td>@user.FirstName @user.LastName</td>
                <td>@user.Supervisor</td>
                <td>@user.CreationUser</td>
                <td>@user.CreationDate</td>
                <td>
                    <a>Delete Account</a><br />
                    <a asp-page="/Edit"> Edit Account</a>
                </td>
            </tr>
        }
    </tbody>
</table>
</form>

 @code {

  Users[] users;

  protected override async Task OnInitializedAsync()
  {
    users = await us.GetUsersAsync();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.