Entity framework core 如何在Entity Framework 7中配置密钥标识列?

Entity framework core 如何在Entity Framework 7中配置密钥标识列?,entity-framework-core,Entity Framework Core,我在实体框架中有以下映射器7 RC1: b.ToTable("Categories"); b.HasKey(x => x.Id); b.Property(x => x.Id) ... ?? 如何在EF 7 RC1中创建Id和标识列 SQL等价物是: Id int identity not null 我读过这样的文章: b.Property(x => x.Id).ForSqlServer().UseIdentity(); 但在EF7 RC1中,我找不到ForSq

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

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??
如何在EF 7 RC1中创建Id和标识列

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是与主键一起使用的默认值生成模式。使用序列是选择性加入。

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

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

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

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

然而,有两种方法可以定义EF核心中的标识值。您可以对序列使用标识(默认)、序列和HiLo模式。默认为标识。事实上,如果属性名以Id或Id结尾,则不必将其定义为标识列。EF Core按照约定将名为Id或Id的属性配置为实体的键

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


请阅读这些文章以了解有关使用和的更多信息。

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

然而,有两种方法可以定义EF核心中的标识值。您可以对序列使用标识(默认)、序列和HiLo模式。默认为标识。事实上,如果属性名以Id或Id结尾,则不必将其定义为标识列。EF Core按照约定将名为Id或Id的属性配置为实体的键

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


请阅读这些文章以了解有关使用和的更多信息。

序列是身份的替代方法。看见EF支持两者,但默认为identity。序列是identity的替代品。看见EF支持两者,但默认为标识。它是大写K,
[Key]
它是大写K,
[Key]