如何首先将 EF Core 代码与 azure synapse 结合使用
How use EF Core code first with azure synapse
我正在尝试使用 C# 和 EF Core 迁移在 Azure 突触中创建数据库,但我遇到了一个问题,当我尝试 运行 update-database 命令时出现以下错误:
Enforced unique constraints are not supported. To create an unenforced unique constraint you must include the NOT ENFORCED syntax as part of your statement.
下面的示例演示了 azure synapse 接受的使用主键创建 table 的形式:
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
只需使用配置 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 服务器时,我没有遇到这个问题,当我使用本地安装的 SQL 服务器时也没有。
Synapse 使用与 Azure SQL 或 SQL 服务器不同的数据库引擎,目前 Entity Framework 不支持它,因此您可以 运行 进入像这样的兼容性问题。您可以在此处为功能请求投票:https://feedback.azure.com/forums/307516-azure-synapse-analytics/suggestions/12868725-support-for-entity-framework
与此同时,当您 运行 遇到此类问题时,您最好的选择是使用 custom SQL scripts,而不是依靠 MigrationBuilder.Sql()
自动生成的脚本解决它们。
我正在尝试使用 C# 和 EF Core 迁移在 Azure 突触中创建数据库,但我遇到了一个问题,当我尝试 运行 update-database 命令时出现以下错误:
Enforced unique constraints are not supported. To create an unenforced unique constraint you must include the NOT ENFORCED syntax as part of your statement.
下面的示例演示了 azure synapse 接受的使用主键创建 table 的形式:
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
只需使用配置 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 服务器时,我没有遇到这个问题,当我使用本地安装的 SQL 服务器时也没有。
Synapse 使用与 Azure SQL 或 SQL 服务器不同的数据库引擎,目前 Entity Framework 不支持它,因此您可以 运行 进入像这样的兼容性问题。您可以在此处为功能请求投票:https://feedback.azure.com/forums/307516-azure-synapse-analytics/suggestions/12868725-support-for-entity-framework
与此同时,当您 运行 遇到此类问题时,您最好的选择是使用 custom SQL scripts,而不是依靠 MigrationBuilder.Sql()
自动生成的脚本解决它们。