Добавить настраиваемое свойство с настраиваемым классом в ApplicationUser - PullRequest
0 голосов
/ 16 июня 2020

Я не хочу добавлять к моему классу ApplicationUser, производному от класса Microsoft.AspNetCore.Identity.IdentityUser, настраиваемое свойство, но не как строку или идентификатор, а как настраиваемый объект. Этот объект не является частью базы данных, он поступает из другого API (и, следовательно, из другой базы данных). Есть ли способ настроить сериализацию / десериализацию, например, с помощью JSON, чтобы объект был сохранен как строка JSON в базе данных? Или есть другой способ сохранить определенные пользователем классы / объекты в базе данных?

public class ApplicationUser : IdentityUser
{
    public ExternalApi.OrganizationItem Organization { get; set; }

    [ForeignSerialization("Organization")]//this does not exist, but is there something like this?
    public string OrganizationJson { get; set; }    
}

Изменить: Я сам написал обходной путь, но мне все еще интересно, есть ли какое-либо встроенное решение в EF-Core для этой проблемы.

public class ApplicationUser : IdentityUser
{
    private OrganizationListItem? _organization;
    public Api.OrganizationListItem? Organization
    {
        get => _organization ??= (OrganizationJson == null ? null : JsonSerializer.Deserialize<Api.OrganizationListItem>(OrganizationJson));
        set
        {
            OrganizationJson = value == null ? null : JsonSerializer.Serialize(value);
            _organization = value;
        }
    }
    public string? OrganizationJson { get; set; }
}

... и в DbContext:

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
    builder.Entity<ApplicationUser>().Ignore(c => c.Organization);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...