如何在实体框架7中配置密钥标识列



我在实体框架中有以下映射器7 RC1

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

如何在EF 7 RC1中制作Id和identity列?

SQL等价物是:

Id int identity not null

我读过这样的文章:

b.Property(x => x.Id).ForSqlServer().UseIdentity();

但在EF7 RC1中,我找不到ForSqlServer()。我发现:

.ForSqlServerHasComputedSql()
.ForSqlServerHasColumnName()
.ForSqlServerHasColumnNameType()
.ForSqlServerHasDefaultValue()
.ForSqlServerHasDefaultValueSql()
.ForSqlServerUseSequenceHiLo()
...

您可以通过调用显式配置标识列。

b.Property(x => x.Id).UseSqlServerIdentityColumn();

同样值得注意的是:identity是与主键一起使用的默认值生成模式。使用序列是选择性的。

natemmaster提供的答案是正确的。您可以使用fluentAPI进行定义,也可以使用数据注释[Key]来定义主键。

然而,有几种方法可以在EF Core中定义身份值。您可以将标识(默认)、序列和HiLo模式与序列一起使用。"标识"是默认设置。事实上,如果您的属性名称以Id或<typeName>根据约定,EF Core配置名为Id或<typeName>Id作为实体的密钥。

扩展方法名称从ForSqlServer开始的原因是,EF Core支持许多数据库提供程序。这些提供程序的功能略有不同,因此您可以根据所使用的提供程序为同一属性指定不同的行为。

请阅读这些文章,了解更多关于将Sequence与EF Core和HiLo与EF Core一起使用的信息。

最新更新