2010-03-19 2 views
3

저는 Entity Framework 4와의 첫 dissapointment를 실행했습니다. SQL CE (EF4와 함께 사용되는 경우)는 does not support autogenerated primary keys입니다. 이 메시지가있는 OnjectContext.SaveChanges()에서 System.Data.UpdateException이 발생합니다.엔터티 키 생성

SQL Server Compact에서 서버 생성 키 및 서버 생성 값을 지원하지 않습니다.

이제 엔티티 용 키를 수동으로 생성해야합니다. 자동 증가 정수 키를 사용한다고 가정 할 때 Entity Framework를 사용할 때 키를 생성하고 추적하는 가장 좋은 방법은 무엇입니까? 당신의 도움을 주셔서 감사합니다.

답변

4

질문의 링크 맨 아래에 제안 된 해결 방법이 있습니다. 대략 SQL Compact, Identity Columns and Entity Framework을 참조하십시오. 아마도 위와 같은 확장 메소드를 구현하는 것이 좋습니다.

+0

대단하네요. - 고마워요! –

+0

좋은 답변이지만 유감스럽게도 링크 된 페이지의 코드는 확장되지 않은 엔터티 집합에 대해서만 작동합니다. 확장 메서드는 엔터티 집합의 최대 ID를 반환하기 때문입니다. 그래서 엔티티 키로 GUID를 사용했습니다. 이 생성자 코드를 사용하여 각 엔터티의 부분 클래스를 만들었습니다. this.ID = Guid.NewGuid() –

0

David의 생각은 좋은 생각이라고 생각하지 않지만 선택의 여지가 없습니다. CE는 다음 버전에서 자동 생성 기본 키를 지원할 수 있습니다.

+2

사실 SQL Compact는 자동 생성 된 키를 지원합니다. 분명히 SQL Compact에서 자동 생성 된 키를 지원하지 않는 EF4입니다. 내 원래 질문에 링크 된 블로그 게시물은 문제를 설명합니다. –