设置实体框架核心中PostgreSQL表计算列的公式



我有一个简单的模型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)

最新更新