复合主键

Ant*_*ell 5 f#

所以这很简单。我似乎无法在网上找到答案。

在Fluent Migrator中,我看到了用PrimaryKey()标记列的选项,但是看不到创建复合主键的任何方法。看起来PrimaryKey也没有过载。

这可能吗?

base.Create.Table(tableName).WithColumn("Id").AsGuid().PrimaryKey().NotNullable().Unique()
                .WithColumn("c1").AsGuid().NotNullable().Unique()
                .WithColumn("c2").AsString().NotNullable()
                .WithColumn("c3").AsString().NotNullable()
                .WithColumn("c4").AsDateTime()
                |> ignore
Run Code Online (Sandbox Code Playgroud)

在此示例中,我想使用c2c3作为复合主键

Cha*_*ert 6

在FluentMigrator中,您可以创建一个复合主键,如下所示:

Create.PrimaryKey("PK_Table").OnTable("Table").WithSchema("schemaname")
    .Columns([|"Col1"; "Col2"|])
    |> ignore
Run Code Online (Sandbox Code Playgroud)


Cal*_*tor 5

我似乎记得您可以将该PrimaryKey()方法应用于多个列。因此,以使用 c2 和 c3 作为复合主键为例:

base.Create.Table(tableName)
    .WithColumn("Id").AsGuid().NotNullable().Unique()
    .WithColumn("c1").AsGuid().NotNullable().Unique()
    .WithColumn("c2").AsString().NotNullable().PrimaryKey()
    .WithColumn("c3").AsString().NotNullable().PrimaryKey()
    .WithColumn("c4").AsDateTime()
    |> ignore
Run Code Online (Sandbox Code Playgroud)