[英]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.