我将 EF Core 与 Postgres 结合使用。我想创建一个“配置”表,其中仅一行,这意味着:
所以我添加了一个像这样的阴影列:
builder.ToTable(x => x.HasCheckConstraint("CK_Configuration_IsSingleRow", "IsSingleRow = true"));
builder.Property<bool>("IsSingleRow").IsRequired();
builder.HasIndex("IsSingleRow").IsUnique();
但是我收到错误:
Npgsql.PostgresException:运算符不存在:布尔=整数
MessageText:运算符不存在:布尔 = 整数
提示:没有运算符与给定名称和参数类型匹配。
我尝试了
IsSingleRow = true
、IsSingleRow = 'true'
、IsSingleRow = 1
和IsSingleRow = '1'
。
正确的语法是什么?
PostgreSQL 将未加引号的标识符折叠为小写;这意味着您需要在检查约束 SQL 中引用列名:
builder.ToTable(x => x.HasCheckConstraint("CK_Configuration_IsSingleRow", "\"IsSingleRow\" = true"));
您还应该能够省略
= true
,因为您的 IsSingleRow 列已经是布尔值。