Я не хочу добавлять к моему классу 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);
}