2009-07-23 3 views
4

데이터베이스에 기본 키가있는 Vehicle 테이블이 있습니다. 나는Entity Framework의 새 개체 - 기본 키 문제

new Vehicle(); 

을 사용하여 새 Vehicle 객체를 생성하고 적절하게 차량의 속성을 업데이트하고 있습니다.

나는 테이블이 성공적으로 업데이트되는

genesisContext.Vehicles.AddObject(vehicle); 

처음을하려고하고, 기본 키는 내가 오류가 키가 고유하지 말하는 얻을 이후의 모든 경우에 0이되면

PRIMARY KEY 제약 조건 'VEHICLES_PK'을 위반했습니다. 중복 키를 'dbo.Vehicles'개체에 삽입 할 수 없습니다. \ r \ n 진술 문은 종료되었습니다. 합니다 (EF가 설정 한 기본 키가 여전히 있기 때문에 아마도 0는)

은 내가 EF 지능적 왜 이런 일이 그래서 기본 키를 작동하는지 이해에서

했다?

답변

9

당신은 두 가지 선택이있다 :

  • 중 하나는 데이터베이스가 INT IDENTITY(1,1)로 VehicleID를 지정하여, 기본 키를 처리 할 수 ​​-이 경우, SQL 서버는 자동적으로 독특하고 개별 번호를 할당하며, EF가 될 것입니다
  • 으로 처리하거나 직접 처리하십시오. 고유 한 차량 ID 번호를 찾는 방법을 앱에서 찾아야합니다.

EF는 기본 키의 고유 번호를 마술처럼 분배하지 않습니다. 생각해 보면 오해였습니다.

마크는

+3

SavingChanges 이벤트에 새로운 ID를 할당 할 수 있습니다 당신은 자신을 처리 할 경우, 당신은 같은 시간에 insterting 여러 사용자와 가능한 문제의 주위에 디자인해야합니다. 나는 자동 생성 된 값을 갖는 것을 선호한다. – HLGEM

+1

네, 절대적으로 - ID가 고유하다는 것을 확인하기 위해 데이터베이스에 남겨 두는 것이 가장 좋은 이유입니다! –

+0

고마워요 - 그래, 문제는 내가 데이터베이스에서 ID 열을 설정하지 않았다는 것이 었습니다. – Calanus

1

당신은 ObjectContext

objectContext.SavingChanges += new EventHandler(objectContext_SavingChanges); 
관련 문제