programing

EFcore를 사용하여 MariaDB에서 자동 증분 int 열 생성

goodsources 2023. 10. 3. 09:11
반응형

EFcore를 사용하여 MariaDB에서 자동 증분 int 열 생성

문제:

0부터 시작하는 자동 증가 정수 기본 키를 가진 코드를 먼저 사용하여 .netcore 2.2에 efcore가 있는 테이블을 만들려고 합니다.제가 찾은 모든 솔루션은 마이그레이션을 추가할 때 오류가 발생하거나 자동 증가가 작동하지만 처음부터 시작합니다.MinValue.

다음 솔루션은 모두 별도로 시도해 보았지만, 조합하지는 않았습니다.


해결책 1:

아무것도 하지 마.그냥 efcore가 기본적인 일을 하도록 내버려 두세요.

-> 열은 자동으로 증가하지만 int에서 시작합니다.최소값


해결책 2:

주석 설정"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]"프라이머리 키로

-> 열은 자동으로 증가하지만 int에서 시작합니다.MinValue 솔루션 3:

modelBuilder.Entity<User>()
    .Property(u => u.Id)
    .ValueGeneratedOnAdd();

-> 열은 자동으로 증가하지만 int에서 시작합니다.최소값


해결책 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의 데이터 유형을 utin으로 변경합니다.

-> 열은 자동으로 증가하지만 int에서 시작합니다.최대값





내 사용자 엔티티:


    public class User
    {
        public int Id { get; set; }
        public string FirstName{ get; set; }
        public string LastName { get; set; }
    }




사용 중인 공급자:포멜로.엔티티 프레임워크 코어.MySql


제 질문을 명확히 하겠습니다.efcore 코드를 먼저 사용하여 MariaDB에서 0에서 1씩 증가하는 자동 증가 정수 기본 키 열을 만드는 방법은 무엇입니까?

안 돼요.

MariaDB(MySQL)는 0을 새로운 생성을 위한 의미로 취급합니다.AUTO_INCREMENT가치.

의 속성을 가정하지 마십시오.AUTO_INCREMENT그것이 제공하지 않는.각각의 새로운 값이 기존의 값과 다를 것이라고만 말합니다.

아마int.MinValue어떤 큰 음의 값(-2^31)입니다.

언급URL : https://stackoverflow.com/questions/56983288/generate-auto-increment-int-column-in-mariadb-with-efcore

반응형