Как я могу пакетно обновить поле jsonb, используя библиотеку Entity Framework Extensions?
Я использую PostgreSQL с EntityFrameworkCore. Мне нужно пакетное обновление jsonb
поле. Пакеты Z.EntityFramework выглядят многообещающе, но ни один из них мне не подходит.
Я устанавливаю поле jsonb с EntityTypeBuilder:
builder.Property(o => o.Description).HasColumnType(NpgsqlDbType.Jsonb);
и с атрибутом ColumnAttribute:
[Column(TypeName = "jsonb")]
public string Description {get; set;}
Это хорошо работает с регулярной практикой обновления. Однако, когда я пытаюсь пакетного обновления поля, используя следующие пакеты:
Install-Package Z.EntityFramework.Extensions.EFCore -Version 2.6.0
Install-Package Z.EntityFramework.Plus.EFCore -Version 2.0.2
Install-Package Z.EntityFramework.Classic -Version 7.1.9
Используя следующий код:
dbContext.AgeBuckets
.Where(o => o.PropertyId == scope.PropertyId)
.UpdateFromQuery(o => //for EF-Plus a method Update()
new AgeBucket
{
Description = serializedDescription //jsonb
});
Никто из них не работает для меня. Я получаю следующие исключения: для EF-Plus:
Npgsql.PostgresException : 42804: column "Description" is of type jsonb but expression is of type text
Для EF-Classic и EF-Extensions:
System.Exception : Could not find the context from the IQueryable expression. Are you sure this is coming from an Entity Framework Context?
Я делаю что-то неправильно?
1 ответ
Решение
Отказ от ответственности: я владелец http://entityframework-extensions.net/
Начиная с версии 2.6.2 (для расширений Entity Framework), json
а также jsonb
тип теперь поддерживается для Batch Update