如何在Entity Framework 7中配置密鑰標識列?

entity-framework-core

我在Entity Framework 7 RC1中有以下Mapper:

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

如何在EF 7 RC1中創建Id和identity列?

SQL等價物是:

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

我讀過會是這樣的:

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

但在EF7 RC1中我找不到ForSqlServer()。我發現:

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

一般承認的答案

您可以通過調用顯式配置標識列。

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

另外值得注意的是:identity是與主鍵一起使用的默認值生成模式。使用序列是選擇加入。


熱門答案

natemcmaster提供的答案是正確的。您可以使用fluentAPI進行定義,也可以使用Data Annotation [Key]來定義主鍵。

但是,有幾種方法可以在EF Core中定義標識值。您可以使用標識(默認),序列和HiLo模式與序列。身份是默認的。實際上,如果您的屬性名稱以Id或<typeName> Id結尾,則不必將其定義為標識列。按慣例,EF Core將名為Id或<typeName> Id的屬性配置為實體的鍵。

ForSqlServer開始具有擴展方法名稱的原因是,EF Core支持許多數據庫提供程序。這些提供程序的功能略有不同,因此您可以根據所使用的提供程序為同一屬性指定不同的行為。

請閱讀這些文章,了解更多關於使用帶有EF核心的Sequcence和帶有EF核心的 HiLo的更多信息。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因