2016-10-12 4 views
0

통합 테스트에서 데이터베이스 작업을 위해 SQL Server CE 4와 EF 6 마이그레이션을 함께 사용하려고합니다. 엔티티의MS SQL Server CE 및 EF 6 마이그레이션을 통한 통합 테스트 테스트

id's는 Guid's이며, 그들 중 일부는 사용하여 서버에 의해 생성됩니다

.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

다른 사람도 GUID를하지만 뭔가있다

.HasKey(x => x.Id); 

를 사용 지속되기 전에 엔티티에 설정됩니다.

그러나 내 컨텍스트를 호출 할 때 예외가 발생합니다. context.saveChanges();

예외 :

{"Server-generated keys are only supported for identity columns. The column 'Id' has type 'SqlServerCe.uniqueidentifier', which is not a valid type for an identity column."} 

이는이 SQL Server CE는 id's을 생성 할수 없어 때문입니까?

SQL Server에 대해 동일한 컨텍스트를 사용하며 훌륭하게 작동합니다.

답변

0

예, SQL Server Compact 엔진의 제한 사항으로 인해 생성 된 id 값을 엔진에서 다시 가져올 수 없습니다.

은 기본

newid() 

을 설정할 수 있습니다 그러나 엔진은

(당신이 @@ IDENTITY를 사용할 수 있습니다 INT 값과는 달리) 저장 한 후 할당 된 GUID 값을 가져 오는 방법을 제공하지 않습니다