簡體   English   中英

使用EFCore在MariaDB中生成自動增量int列

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

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