Dynamic JSONB в PostgreSQL с EF CoreC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Dynamic JSONB в PostgreSQL с EF Core

Сообщение Anonymous »

Я строю приложение агрегатора в ядра .NET, используя C# и Entity Framework, которая объединяет пользовательские данные из различных служб. В нашем дизайне используется структура с двумя таблицами. В одной таблице (ServiceEvent), наряду со стандартными столбцами, у нас есть столбец JSONB (EventData), в которой хранится информация для конкретной службы. Каждая строка представляет пользователя и экземпляр службы; Тем не менее, каждая служба имеет особую структуру JSON (которую мы знаем заранее).
Когда сервис запускает веб -крюк (например, при создании деятельности), соответствующее событие вставлено/обновлено в эту таблицу. Соответствующая сущность выглядит следующим образом: < /p>

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

public class ServiceEvent : EntityBaseGuidConcurrency
{
public string EmployeeId { get; set; }
public ServiceNames ServiceName { get; set; }
public DateTime CreationTs { get; set; }
public DateTime EndTs { get; set; }
public EventStatus Status { get; set; }
public double? Price { get; set; }
public JsonDocument EventData { get; set; }

#region Navigation Properties
public virtual Employee Employee { get; set; }
#endregion
< /code>
Я изучаю стратегии для обработки данных JSONB без схемы (необходимо упомянуть, что EF довольно новый для меня.). Вот подходы, которые я рассматриваю: < /p>

 Использование JSondocument напрямую: < /li>
< /ol>
сохранить JSON в качестве JSondocument и использовать JSON API (например, RootElement и GetPropert Необходимо преобразовать его в изменчивую структуру (например, с использованием jsonnode) для обновления полей. Подходящее сильно напечатано poco (например, ActivityEventData для действий). < /p>
Преимущества: улучшенная безопасность и обслуживаемость типа. столбец) и раскрыть вычисленные свойства (например, ActivityData или CarpoolingData), которые десериализуют JSON на основе обслуживания. < /p>
public class ServiceEvent : EntityBaseGuidConcurrency
{
public string EmployeeId { get; set; }
public ServiceNames ServiceName { get; set; }
public DateTime CreationTs { get; set; }
public DateTime EndTs { get; set; }
public EventStatus Status { get; set; }
public double? Price { get; set; }
public string EventDataJson { get; set; }

[NotMapped]
public ActivityEventData ActivityData
{
get => ServiceName == ServiceNames.activity ?
JsonSerializer.Deserialize(EventDataJson) : null;
set => EventDataJson = JsonSerializer.Serialize(value);
}

[NotMapped]
public CarpoolingEventData CarpoolingData
{
get => ServiceName == ServiceNames.carpooling ?
JsonSerializer.Deserialize(EventDataJson) : null;
set => EventDataJson = JsonSerializer.Serialize(value);
}

#region Navigation Properties
public virtual Employee Employee { get; set; }
#endregion
}

Обратите внимание на то, что «активность» и «автопроизводство» являются эксмаплями услуг, которые у нас есть.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... th-ef-core
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Dynamic JSONB в PostgreSQL с EF Core
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Ошибка: TypeError: экземпляр «JSArray<dynamic>»: тип «List<dynamic>» не является подтипом типа «Map<List<dynamic>, Dynam
    Anonymous » » в форуме Android
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous
  • Jsonb.fromJson не десериализует набор, созданный из строки JSON, созданной Jsonb.toJson(objectWithSet).
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Jsonb.fromJson не десериализует набор, созданный из строки JSON, созданной Jsonb.toJson(objectWithSet).
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core 8 Web API/C#/Dapper/Postgresql Сохранение и обслуживание столбца JSONB, не касаясь столбца
    Anonymous » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous

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