使用以下代码,
public class UserProfile
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
// more properties here
}
我认为EF正在使用newguid(),但是当我检查数据库时,我看到默认值是newsequentialid()
这是EF的默认行为吗?或者是因为我使用的是SQL Server 2017?
答案 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);