Когда сервис запускает веб -крюк (например, при создании деятельности), соответствующее событие вставлено/обновлено в эту таблицу. Соответствующая сущность выглядит следующим образом: < /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