复合主键

时间:2017-08-21 12:36:55

标签: 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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

我似乎记得您可以将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