簡體   English   中英

如何使用 Entity Framework Core 配置標識列?

[英]How to configure an Identity column using Entity Framework Core?

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

顯然,例如,我可以使用 EF6 的 fluent API 來做到這一點。

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

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

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

這里這里

您將為 Identity 配置一個屬性,如下所示:

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

您可以為 Sequences 配置一個屬性,如下所示:

 ForSqlServer().UseSequence();

由於 aspnet-core 重組,url 已更改,自首次詢問以來,方法也已更改。

這里這里

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

這些 url 可能會再次更改(這就是我包含相關代碼的原因),但是只需查看 url 並轉到站點並找出新 url 是非常容易的。

真的,我的回答的重點是,您可以通過查看 GitHub 上源代碼中的單元測試來自己解決這些問題。 你不應該需要有人用勺子把它喂給你。

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

使用最新的 EF Core 1.0 及更高版本,您應該使用

builder.Entity<ApplicationUser>().Property<int>(nameof(ApplicationUser.AccountNo))
            .UseSqlServerIdentityColumn()

看起來他們再次改變了它,現在的新方法是:

.UseIdentityColumn()

這是在您想要或它不是默認行為的情況下明確執行的方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM