实体框架对Guid Key使用newsequentialid()

时间:2017-11-25 07:39:49

标签: c# entity-framework entity-framework-6 ef-code-first

使用以下代码,

public class UserProfile
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    // more properties here
}

我认为EF正在使用newguid(),但是当我检查数据库时,我看到默认值是newsequentialid()

这是EF的默认行为吗?或者是因为我使用的是SQL Server 2017?

1 个答案:

答案 0 :(得分:1)

您是对的,默认情况下newsequentialid()用作GUID属性的默认值。建议newsequentialid()超过newid(),主要是出于性能方面的考虑。

如果您希望将newid()作为默认值,则可以通过启用迁移并在defaultValueSql中指定CreateTable()来实现此目的:

CreateTable(
    "dbo.UserProfiles",
    c => new
        {
            Id = c.Guid(nullable: false, identity: true, defaultValueSql: "newid()"),
            Name = c.String(),
        })
    .PrimaryKey(t => t.Id);