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

时间:2015-12-16 17:05:45

标签: entity-framework-core

我在实体框架中有以下Mapper 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()
...

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

但是,有几种方法可以在EF Core中定义标识值。您可以使用标识(默认),序列和HiLo模式与序列。身份是默认的。实际上,如果您的属性名称以Id或< typeName>结尾,则不必将其定义为标识列。 ID。按惯例,EF Core将名为Id或< typeName> Id的属性配置为实体的键。

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

请阅读这些文章,了解有关使用Sequcence with EF CoreHiLo with EF core的更多信息。

相关问题