如何使用 Entity Framework 扩展库批量更新 jsonb 字段?
How can I batch update jsonb field using Entity Framework Extensions library?
我将 PostgreSQL 与 EntityFrameworkCore 结合使用。我需要批量更新 jsonb
字段。 Z.EntityFramework 包看起来很有前途,但是 none 对我有用。
我使用 EntityTypeBuilder 设置 jsonb 字段:
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
});
None 对我有用。我收到下一个例外:
对于 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?
我是不是做错了什么?
免责声明:我是Entity Framework Extensions
的所有者
从 v2.6.2 开始(对于 Entity Framework 扩展),Batch Update
现在支持 json
和 jsonb
类型
我将 PostgreSQL 与 EntityFrameworkCore 结合使用。我需要批量更新 jsonb
字段。 Z.EntityFramework 包看起来很有前途,但是 none 对我有用。
我使用 EntityTypeBuilder 设置 jsonb 字段:
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
});
None 对我有用。我收到下一个例外: 对于 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?
我是不是做错了什么?
免责声明:我是Entity Framework Extensions
的所有者从 v2.6.2 开始(对于 Entity Framework 扩展),Batch Update
json
和 jsonb
类型