2012-04-12 3 views
1

Entity Framework 4.3.1을 사용하고 있고 테이블에 새 레코드를 삽입하려고합니다. ProductVersion 엔티티의 기반이됩니다.Entity Framework에서 복합 키를 사용하여 행 삽입

ProductVersion 엔티티에는 ProductIdProductOrdinal 테이블에 대한 복합 기본 키를 구성하는 2 개의 등록 정보가 있습니다.

사람이 상품 항목을 업데이트 할 때마다 ProductVersion 엔티티를 작성하여 ProductOrdinal 속성을 증가시키고 컨텍스트에 엔티티를 추가하고 저장하려고 시도하면됩니다.

나는 다음과 같은 오류가 계속 :

The property 'ProductOrdinal' is part of the object's key information and cannot be modified.

어느 쪽 번호 매기기하는 키를 구성하는 열을 나는 내 POCO의 속성을 주석 한 다음

[Key, Column("PROD_Ordinal", Order=2), DatabaseGenerated(DatabaseGeneratedOption.None)] 
public long ProductOrdinal { get; set; } 
+1

예외 및 설명을 통해 기존 'ProductVersion'인스턴스의 'ProductOrdinal'속성을 증가시키고 저장하려고하는 것으로 보입니다. 기존 인스턴스에서 'ProductVersion'의 새 인스턴스를 만들고 'ProductOrdinal'속성을 증가시키고 새 인스턴스를 저장하는 것이 좋습니다. – alwayslearning

+0

나는 그것을 조사 할 것이다. 나는 네가 옳을 수도 있다고 생각한다. – Maxmanzero

+1

정말 옳았습니다. 컨텍스트는 여전히 열려있어서 "현재"개체를 업데이트하고 관련 개체를 업데이트했을 때 동일한 개체를 업데이트했고 이미 삽입 된 키를 업데이트하려고한다는 불평을했습니다. – Maxmanzero

답변

1

Marc_S을 이것이 왜 작동하지 않는지에 대한 그의 코멘트에서 정확히 맞았습니다.

예외 및 설명에서 기존 'ProductVersion'인스턴스의 'ProductOrdinal'속성을 증가시키고 저장하려고하는 것으로 보입니다. 기존 인스턴스에서 'ProductVersion'의 새 인스턴스를 만들고 'ProductOrdinal'속성을 증가시키고 새 인스턴스를 저장하는 것이 좋습니다.

관련 문제