복붙노트

[SQL] 엔티티 프레임 워크 오류 : 테이블의 ID 열에 대한 명시 적 값을 삽입 할 수 없습니다

SQL

엔티티 프레임 워크 오류 : 테이블의 ID 열에 대한 명시 적 값을 삽입 할 수 없습니다

나는 EF에이 오류를 받고 있어요.

DB를에 열 신원 증가하고 EF 디자인 파일, StoreGeneratedPattern뿐만 아니라 정체성입니다. EF는 0을 내가 저장하려고 할 때마다 삽입하려고하는 것 같다.

몇 가지 제안은 ID가 테이블에 예약하거나 테이블을 삭제하고 스크립트를 다시 실행하고 있다고 말했습니다.

어떤 아이디어?

여기에 몇 가지 코드는 :

GroupMember groupMember = new GroupMember();
            groupMember.GroupId = group.Id;
            groupMember.UserId = (new UserId(group.Owner));
            //groupMember.Id = _groupContext.GroupMembers.Count();
            group.GroupMembers.Add(groupMember);

            _groupContext.SaveChanges();

해결법

  1. ==============================

    1.나는 전에이로 실행했다. 이 오류는 데이터베이스를 자동으로 할당하는 열을 명시 적으로 값을 할당하려고하는 것을 의미한다.

    나는 전에이로 실행했다. 이 오류는 데이터베이스를 자동으로 할당하는 열을 명시 적으로 값을 할당하려고하는 것을 의미한다.

    암시: 데이터베이스에서 만든 수있는 변경 사항을 반영하기 위해 edmx 파일을 업데이트합니다. 데이터베이스가 자동으로 값을 할당하면 해당 속성 아래 디자이너 파일에서 "IsDbGenerated = true"로 속성을 볼 수 있습니다. 거기가 아니라면, 당신은 수동으로 추가 할 수 있습니다.

  2. ==============================

    2.이 시도:

    이 시도:

    using System.ComponentModel.DataAnnotations.Schema;
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public decimal Identity_Col { get; set; }
    

    엔터티 프레임 워크 클래스 파일은 ID 열을 코드 줄을 추가합니다.

  3. ==============================

    3.정체성 해당 부동산의 상단에이 attribs을 넣어 :

    정체성 해당 부동산의 상단에이 attribs을 넣어 :

    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    
  4. ==============================

    4.구글의 첫 경기는, 그래서 여기 내 솔루션입니다 :

    구글의 첫 경기는, 그래서 여기 내 솔루션입니다 :

    EF 코드 첫째 : 때문에 자동 증가 PK 'ID'필드와 GUID 열이 같은 디자인 :

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid FileToken { get; set; }
    

    중복 정체성이 있었다. 나는 그것을 할 수 변경 :

    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    [DefaultValue("newid()")]
    public Guid FileToken { get; set; }
    

    그리고 문제가 멀리 갔다.

    당신을 도움이되기를 바랍니다.

    에릭

  5. ==============================

    5.EF 6에서이 작업을 수행하는 모델의 필드 / 컬럼의 속성이 있습니다 : StoreGeneratedPattern.

    EF 6에서이 작업을 수행하는 모델의 필드 / 컬럼의 속성이 있습니다 : StoreGeneratedPattern.

    속성 드롭 다운 목록에서 "정체성"로 설정합니다.

    (내가 EF 4. 위의 대답에 대해 알고하지 않습니다, IsDbGenerated를 사용하여, EF 4.이 될 것 같다)

    요소에 속성에 기본 XML에서 그리고이 해당한다 :

    <Property Name="MyTableId" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
    

    당신이 디자이너를 사용할 수 있기 때문에 - 그러나 당신은 수동으로 XML을 처리 할 필요가 없습니다.

    이 엉망이됩니다 방법은 명확하지 않다. 난 데이터베이스에서 내 모델을 새로 고침 후 문제가 있었다. 당신이 테이블에 PK를 설정하거나 이름을 변경하면 이미 모델을 생성 한 후 아마도 그것은, 혼동됩니다. (내가 먼저 테이블 / 데이터베이스 첫 번째 방법이 아닌 코드를 사용하고 있습니다.)

    이 상황에서 엔티티 코드가 EF에 의해 생성되기 때문에 당신은 엔티티 코드는 C # 속성을 가하고의 위의 방법을 사용할 수 없습니다. EF는 필드가 정체성이다 ( "자체") 이해하기로한다.

  6. ==============================

    6.나는 내 응용 프로그램에서이 문제를 가지고 있었다; 아이덴티티의 id 필드의 속성을 "StoreGeneratedPattern을"변화를 고정되었다.

    나는 내 응용 프로그램에서이 문제를 가지고 있었다; 아이덴티티의 id 필드의 속성을 "StoreGeneratedPattern을"변화를 고정되었다.

    그래서 모델로 이동; 테이블에 대한 조회; 기본 키 필드의 속성을 클릭합니다; 및 속성을 변경합니다.

  7. ==============================

    7.내 AspNetCore 2.x를 프로그램에서 동일한 문제 및 오류 메시지가 발생했습니다. 내가 해결할 수있는 유일한 방법은 그것을 DbContext 클래스의 ModelBuilder.Entity 방법이 라인을 제거했다 :

    내 AspNetCore 2.x를 프로그램에서 동일한 문제 및 오류 메시지가 발생했습니다. 내가 해결할 수있는 유일한 방법은 그것을 DbContext 클래스의 ModelBuilder.Entity 방법이 라인을 제거했다 :

    // remove: entity.Property(e => e.Id).ValueGeneratedNever();
    
  8. from https://stackoverflow.com/questions/11173562/entity-framework-error-cannot-insert-explicit-value-for-identity-column-in-tabl by cc-by-sa and MIT license