Есть вот такая моделька
Моделькаpublic class ServiceSettingEntity
{
/// <summary>
/// Уникальный ключ в БД
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int? Id { get; set; }
/// <summary>
/// Наименование сервиса
/// </summary>
public string ServiceName { get; set; }
/// <summary>
/// Настройки сервиса
/// </summary>
public JsonServiceSettings Settings { get; set; }
}
/// <summary>
/// Настройки определенного сервиса
/// </summary>
public class JsonServiceSettings
{
/// <summary>
/// Метод сервиса
/// </summary>
public string Method { get; set; }
/// <summary>
/// Версия настроек сервиса
/// </summary>
public string Version { get; set; }
/// <summary>
/// Коллекция настроек сервиса
/// </summary>
public List<InternalServiceSettings> Settings { get; set; }
}
/// <summary>
/// Внутренняя сущность настройки сервиса
/// </summary>
public class InternalServiceSettings
{
/// <summary>
/// Наименование настройки
/// </summary>
public string Name { get; set; }
/// <summary>
/// Значение настройки
/// </summary>
public string? Value { get; set; }
/// <summary>
/// Стандартное значение настройки
/// </summary>
public string DefaultValue { get; set; }
/// <summary>
/// Обязательна ли настройка
/// </summary>
public bool Required { get; set; }
/// <summary>
/// Описание настройки
/// </summary>
public string? Description { get; set; }
}
Храним JsonServiceSettings в JSON формате
Упаковываю ее вот так через modelBuilder
spoiler
modelBuilder
.Entity<ServiceSettingEntity>()
.OwnsOne(sett => sett.Settings, builder =>
{
builder.OwnsMany(x => x.Settings, build => build.ToJson());
builder.ToJson();
});
Она спокойно уходит в БД, но, если пробовать ее получить, то, получаем
Microsoft.Data.SqlClient.SqlException (0x80131904): JSON_QUERY не является известным имя встроенной функции.
Весь интернет перерыл, ничего не нашел.
пробовал вот так
spoiler
modelBuilder
.Entity<ServiceSettingEntity>()
.OwnsOne(sett => sett.Settings, builder =>
{
builder.OwnsMany(sett => sett.Settings,
builder => builder.Property(x => x)
.HasConversion((x) => JsonConvert.SerializeObject(x),
str => JsonConvert.DeserializeObject<InternalServiceSettings>(str)));
});
Но, не помогло. В чем проблема?
upd: MsSQL - DB
EF Core 7 - ORM
Необходимо получать как единую заполненную модель.