В 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;
}
}
Метод ConfigureServices в Startup.cs
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();
}
}