我在实体框架中有以下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()
...
答案 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 Core和HiLo with EF core的更多信息。