2010-07-10 6 views
2

내 테이블 중 하나에 복합 기본 키 (Int 및 DateTime)가 있습니다.오류 " 'DateTime'유형의 기본 키 열을 서버에서 생성 할 수 없습니다."

기본 키 : 나는, 나는 다음과 같은 오류를 얻을 수 (날짜 시간 "AutoGeneratedValue = true"로 설정 필드 및 서버의 기본 값으로 GETDATE()와 함께) LINQ를 사용하여 새 레코드를 추가 할 때 'DateTime'유형의 열을 서버에서 생성 할 수 없습니다.

어떤 이유입니까? 나는 그것이 이전에 효과가 있었지만 그것이 작동을 멈추게 할 원인을 밝힐 수는 없다고 생각한다. 불행히도 이러한 종류의 오류에 대한 구체적인 정보는 거의 없습니다.

또한 SQL Server Management Studio를 통해 행을 수동으로 커밋하면 올바르게 작동하고 datetime 값을 올바르게 자동 생성합니다. 데이터베이스 측의 복합 키를 유지하면서 나는 DBML에서 false로 날짜 시간은 "IsPrimaryKey"을 설정하면 내가 일을 가지고 :

편집 - LINQ의 버그를이어야하는 것은를 SQL로 -이 작업을 얻었다.

그래서이 작동합니다

  • SQL 서버 : 복합 기본 키 (ID INT, MyDate가 DATETIME - 자동 생성)
  • DBML : 마크 이드가 기본 키. MyDate를 자동 생성으로 표시하지만 은 기본 키가이 아닙니다.

저는 이것이 LINQ to SQL의 버그라고 생각합니다.

+0

할 수있는 위치에 있다면 SQL 프로파일 러를 서버에 대해 실행하고 Linq가 생성하는 쿼리를 캡처하는 것이 좋습니다. 이는 약간의 불만을 제기 할 수 있습니다. –

답변

1

SQL Server에서 필드의 기본값을 자체 생성하도록 설정해야합니다. DateTime 필드의 경우 일반적으로 GETDATE()입니다.

편집 :

외에 AutoGeneratedValue = true에서 당신은 또한 OnInsertAuto-Sync을 설정해야합니다.

+0

사실 이미 그렇습니다. 내 질문 설명에 추가. – Alex

+0

왜 downvote? – Oded

+0

@Alex - '자동 동기화'를 'OnInsert'로 설정 했습니까? – Oded

관련 문제