Ho cercato alcuni esempi che dimostrano che l'esecuzione della procedura memorizzata tramite blazor.
Finora non ho visto nulla di correlato all'esecuzione della procedura memorizzata tramite blazor.
Ecco il parametro con SP
MSKCIS.UpdateDischargeBoardData
@ClientVisitGuid ,
@CurrentLocationGuid ,
@DischargeDateExp ,
@DischargeTimeExp ,
@DischargeDtmExp ,
@userId
In EF Core 3.0, è necessario utilizzare il metodo di estensione FromSqlRaw per eseguire una procedura memorizzata.
Ecco una semplice demo funzionante su come ottenere i dati utente dal database mediante stored procedure.
Modello utente
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;
}
}
Metodo ConfigureServices in 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();
}
}