如何使用Entity Framework Core配置Identity列?

c# entity-framework-core

如何在Entity Framework Core中創建自動增量標識列?

顯然,我可以使用流暢的API for EF6來做到這一點。

一般承認的答案

由於EF7文檔很少,我們知道的大部分內容都要從源代碼或單元測試中收集。根據EF7源中的以下兩個單元測試......

這里這裡

您可以為Identity配置屬性,如下所示:

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

你會為Sequences配置一個屬性,如下所示:

ForSqlServer().UseSequence();

由於aspnet-core reorg,網址發生了變化,自首次提出此問題以來,這些方法也發生了變化。

這里這裡

if (_useSequence) 
{
    b.Property(e => e.Identifier).ForSqlServerUseSequenceHiLo();
} 
else 
{
    b.Property(e => e.Identifier).UseSqlServerIdentityColumn();
}

這些網址可能會再次發生變化(這就是為什麼我會包含相關代碼),但只是查看網址並訪問網站並找出新網址是多麼容易。

真的,我的答案的全部意義在於你可以通過在GitHub上查看源代碼中的單元測試來自己解決這些問題。你不應該需要有人把勺子餵給你。

編輯:更新了2.1版的鏈接(仍適用於1.1和2.0)


熱門答案

在最新版本的EF7中,有一種新的擴展方法來設置標識列

protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
  modelBuilder.Entity<MyEntity>(b =>
  {
    b.HasKey(e => e.Identifier);
    b.Property(e => e.Identifier).ValueGeneratedOnAdd();
  });
}


Related

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