.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);

但我需要在两列(例如:FooBar)上定义 UNIQUE 约束,但我无法在 columns 参数中表达这一点。 (参数类型为System.Linq.Expressions.Expression<Func<TColumns,object>>)

如何使用 CreateTableBuilder class?

在两个或多个列上定义 UNIQUE 约束

试试这个:

columns: x => new {x.Foo, x.Bar}