【发布时间】:2021-07-11 23:04:01
【问题描述】:
我正在尝试使用 C# 和 EF Core 迁移在 Azure synapse 中创建数据库,但我遇到了一个问题,当我尝试运行 update-database 命令时出现以下错误:
不支持强制的唯一约束。要创建非强制的唯一约束,您必须在语句中包含 NOT ENFORCED 语法。
以下示例演示了 azure synapse 接受的用于使用主键创建表的表单:
CREATE TABLE dbo.sample_table
(
c1 int IDENTITY(1,1) NOT NULL,
c2 char(10) NULL,
c3 datetime NULL
)
ALTER TABLE t1
ADD CONSTRAINT PK_t1_c1
PRIMARY KEY NONCLUSTERED (c1) NOT ENFORCED
这是因为要使用主键,必须包括:
NONCLUSTERED (myPrimaryKey) NOT ENFORCED
要包含NONCLUSTERED,只需使用 configuração abaixo。
public class ManifestationMap : IEntityTypeConfiguration<Manifestation>
{
public void Configure(EntityTypeBuilder<Manifestation> builder)
{
builder.ToTable("Manifestation");
builder.HasKey(prop => prop.Id)
.IsClustered(false); // Include NONCLUSTERED
...
但我没有找到包含 NOT ENFORCED 的解决方案。
Obs:我使用 Azure SQL Server 时没有这个问题,使用本地安装的 SQL Server 时也没有。
【问题讨论】:
标签: c# entity-framework-core azure-sqldw azure-synapse