2016-07-05 1 views
1

아래 클래스의 개체를 사용하여 ServiceStack (SQL Server 2014)에 대한 "삽입"기능을 사용하려고하면 0을 삽입하려고 시도합니다. ContactId의 기본값 속성) 대신 자동으로 데이터베이스에 하나를 생성합니다. ContactId는 IDENTITY NOT NULL입니다. ContactId는 클러스터 된 인덱스이지만 GlobalContactId는 클러스터되지 않은 기본 키입니다.PK가 아닌 필드의 ServiceStack ID - 삽입이 실패 함

[Alias("Contact")] 
[Schema("Customer")] 
public partial class Contact 
{ 
    [PrimaryKey] 
    public Guid GlobalContactId { get; set; } 
    [AutoIncrement] 
    public int ContactId { get; set;} 
    ... 

나는이 일을 해요 이유는

  1. 이 분산 응용 프로그램, 그리고 전화 가정에 필요 - 따라서 GUID
  2. 그것은 오래된 데이터 가져 오기 및 사용자가 참조 할 자사 쉽게 (적어도 특정 위치에 대해서는) GUID가 아닌 int이며 앞으로 나아갈 것입니다.
  3. 성능상의 이유로 데이터가 집에없는 다른 테이블에 대한 ContactId를 FK로 사용하고 있습니다.

속성에 [AutoIncrement]이 있고 값이 해당 유형의 기본값과 일치하면 값이 설정되지 않았다고 가정합니다.

편집 지금은 단지 PK 및 ID 모두로 ContactID가를 사용하여 복귀하고 [AutoIncrement] 속성이 자동 지정을위한 OrmLite에서

+0

중복 가능 http://stackoverflow.com/questions/19277431/servicestack-ormlite-cannot-update-identity-column – Oleg

+0

중복되지 않습니다. 그 질문은 자동 증가가있는 테이블의 PK에 관한 것이 었습니다. 이 경우 ID 필드는 기본 키가 아닙니다. –

+0

아마도 도움이 될 것입니다. http://techfunda.com/howto/121/auto-increment-property-in-model –

답변

2

고유 점검 제한 조건과 고유 식별자를 추가 해요 들어

기본 키 증가 중. 따라서 비 기본 키 열에서는 사용할 수 없습니다.

관련 문제