[英]Generate auto-increment int column in MariaDB with EFCore
問題:
我正在嘗試使用codefirst在.netcore 2.2中使用efcore創建一個表,該表具有從0開始的自動遞增整數主鍵。我發現的所有解決方案都會導致添加遷移或自動遞增工作時出錯,但從int開始.MinValue。
以下所有解決方案均已單獨嘗試,未結合使用:
解決方案1:
沒做什么。 只需讓efcore進行默認操作即可。
->列自動增加,但從int.MinValue開始
解決方案2:
在主鍵上設置注釋"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]"
。
->列自動增加,但從int.MinValue開始
解決方案3:
modelBuilder.Entity<User>()
.Property(u => u.Id)
.ValueGeneratedOnAdd();
->列自動增加,但從int.MinValue開始
解決方案4:
modelBuilder.HasSequence<int>("User_seq")
.StartsAt(0)
.IncrementsBy(1);
modelBuilder.Entity<User>()
.Property(u => u.Id)
.HasDefaultValueSql("NEXT VALUE FOR User_seq");
->添加遷移失敗,並顯示以下錯誤:
"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SEQUENCE User_seq START WITH 0 INCREMENT BY 1' at line 1"
解決方案5:
將Id的數據類型更改為uint。
->列自動增加,但從int.MaxValue開始
我的用戶實體:
public class User
{
public int Id { get; set; }
public string FirstName{ get; set; }
public string LastName { get; set; }
}
使用的提供程序: Pomelo.EntityFrameworkCore.MySql
要澄清我的問題:如何使用efcore codefirst在MariaDB中創建從0開始遞增1的自動遞增整數主鍵列?
你不能。
MariaDB(MySQL)將0視為創建新的AUTO_INCREMENT
值的含義。
不要假定它沒有提供的AUTO_INCREMENT
屬性。 它僅表示每個新值都將與現有值不同。
int.MinValue
可能是一個較大的負值(-2 ^ 31)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.