Я использую преобразование EF Core.
https://docs.microsoft.com/en-us/ef/core/modeling/value-conversions
Я написал преобразователь сериализатора JSON следующим образом:
private static ValueConverter<T, String> JsonValueConverter<T>()
{
ValueConverter<T, String> jsonConverter = new ValueConverter<T, String>(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<T>(v));
return jsonConverter;
}
Реализовано в приложении с:
protected override void OnModelCreating(ModelBuilder mb)
{
...
mb.Entity<MyObject>()
.Property(p => p.MySerializableObject)
.HasConversion(JsonValueConverter<MySerializableObject>());
...
}
Работает.
Однако, когда вы вносите изменения в свойство внутри сериализованного объекта, отслеживание изменений EF Core не регистрирует изменения в MySerializableObject
.
Я предполагаю, что есть какой-то способ заставить это на уровне объекта. Я пытался внедрить IEqualityComparer
на MySerializableObject
, но отслеживание изменений не начало работать.