我有一个简单的模型Id和json属性和计算列,这是'tile'的值json列中的键
public class Book
{
public int Id { get; set; }
[Column(TypeName="jsonb")]
public string JsonInfo { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string Title { get; set; }
}
设置Title
值的计算方式:
builder.Property(t => t.Title).HasComputedColumnSql("("JsonInfo"->>''title'')", stored:true).HasColumnType("varchar(150)");
迁移没有问题,但不幸的是,数据库更新以错误结束:
42601: syntax error at or near "title"
问题是"("JsonInfo"->>''title'')"
内部的title
是如何逃脱的。我怎样才能修好它?
只是提一下,我使用最新版本的PostgreSQL
你不应该用两个单引号转义标题;你给HasComputedColumnSql的SQL不是文本文字,它是实际的SQL。所以下面的代码应该可以工作:
.HasComputedColumnSql(""JsonInfo"->>'title'", stored: true)