.NET:如何使用 Entity Framework Core 3.1 Migrations 的 CreateTableBuilder 定义唯一约束?
.NET: How to Define a Unique Constraint using Entity Framework Core 3.1 Migrations' CreateTableBuilder?
我正在使用 Entity Framework Core 3.1 Migrations and utilizing the MigrationBuilder
and CreateTableBuilder
classes 创建一个 SQL 服务器 table,像这样:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Example",
columns: table => new
{
Id = table.Column<Guid>(nullable: false),
Foo = table.Column<string>(maxLength: 256, nullable: false),
Bar = table.Column<string>(maxLength: 256, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Example", x => x.Id);
});
}
我已经能够像这样在单个列上定义 UNIQUE 约束:
table.UniqueConstraint(
name: "Unique_Foo",
columns: x => x.Foo);
但我需要在两列(例如:Foo
和 Bar
)上定义 UNIQUE 约束,但我无法在 columns
参数中表达这一点。 (参数类型为System.Linq.Expressions.Expression<Func<TColumns,object>>
)
如何使用 CreateTableBuilder
class?
在两个或多个列上定义 UNIQUE 约束
试试这个:
columns: x => new {x.Foo, x.Bar}
我正在使用 Entity Framework Core 3.1 Migrations and utilizing the MigrationBuilder
and CreateTableBuilder
classes 创建一个 SQL 服务器 table,像这样:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Example",
columns: table => new
{
Id = table.Column<Guid>(nullable: false),
Foo = table.Column<string>(maxLength: 256, nullable: false),
Bar = table.Column<string>(maxLength: 256, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Example", x => x.Id);
});
}
我已经能够像这样在单个列上定义 UNIQUE 约束:
table.UniqueConstraint(
name: "Unique_Foo",
columns: x => x.Foo);
但我需要在两列(例如:Foo
和 Bar
)上定义 UNIQUE 约束,但我无法在 columns
参数中表达这一点。 (参数类型为System.Linq.Expressions.Expression<Func<TColumns,object>>
)
如何使用 CreateTableBuilder
class?
试试这个:
columns: x => new {x.Foo, x.Bar}