Расширение ApplicationUser в новом проекте Blazor Server с отдельными учетными записями.C#

Место общения программистов C#
Ответить
Anonymous
 Расширение ApplicationUser в новом проекте Blazor Server с отдельными учетными записями.

Сообщение Anonymous »

Я пытаюсь расширить ApplicationUser настраиваемыми свойствами в новом серверном проекте Blazor. Вот что у меня есть:

Код: Выделить всё

public class Tariff
{
public int Id { get; set; }
public required string Name { get; set; }
public double MonthlyFee { get; set; }
public int NetworkSpeed { get; set; }
}

public class ApplicationUser : IdentityUser
{
// Added field and foreignkey attribute after, but that changed nothing
public int TariffId { get; set; }
[ForeignKey(nameof(TariffId))]

public required Tariff Tariff { get; set; }
public double Balance { get; set; }
}

public class ApplicationDbContext(DbContextOptions options) : IdentityDbContext(options)
{
public DbSet Tariff { get; set; }
}

После применения сгенерированной миграции я получил таблицу Tariff с соответствующими столбцами и столбец TariffId в таблице AspNetUsers.
Я также изменил процесс регистрации следующим образом:

Код: Выделить всё

var user = Activator.CreateInstance();
var defaultTariff = DbContext.Tariff.FirstOrDefault();
user.Tariff = defaultTariff!;
return user;
И таблица тарифов заполняется вручную примерами строк. После этого я пытаюсь получить доступ к полю на странице Blazor.

Код: Выделить всё

@page "/Account/Personal"
@using Microsoft.AspNetCore.Identity
@using WebApp.Components.Account.Shared
@using WebApp.Data

@inject UserManager UserManager
@inject SignInManager SignInManager
@inject IdentityUserAccessor UserAccessor
@inject IdentityRedirectManager RedirectManager
@inject ApplicationDbContext DbContext


@foreach (var tariff in DbContext.Tariff.ToList())
{
@tariff.Name
}


@code {
private ApplicationUser user = default!;

[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;

protected override async Task OnInitializedAsync()
{
user = await UserAccessor.GetRequiredUserAsync(HttpContext);
}
}
Но отладчик показывает, что поле «Тариф» имеет значение null. Однако другие поля, например, TariffId и Balance, заполняются нормально.
Чего мне не хватает для автоматического заполнения этого свойства?

Подробнее здесь: https://stackoverflow.com/questions/784 ... individual
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»