2009-05-01 4 views
0

저는 Entity Framework을 처음 사용하고 있으며 첫 번째 MVC 응용 프로그램을 만드는 과정에 있습니다. 그러나 간단한 엔티티에 대한 만들기보기 구현 해요, (SQL Express 2005) ID 열 기본 키 문제가 있습니다. 프레임 워크는 Identity 열을 처리하고 SQL 데이터베이스에서 ID 값을 생성하도록합니다.Entity Framework ID 열이 작동하지 않습니다.

ID 값을 설정하지 않고 만들기보기를 사용하여 저장하려고하면 "값은 필요합니다"오류가 발생합니다. ID에 대한 값을 지정하면 데이터베이스의 Identity 값을 사용하여 다시 데이터베이스에 저장됩니다. 내가 지정한 값보다 오히려 T-SQL이 분명히 올바르게 생성되면 분명히 그렇게됩니다.

IDENTITY 속성이 데이터베이스의 ID 열을 설정하고 StoreGeneratedPattern이 모델에서 "정체성"으로 설정됩니다 (아래 참조) : -

속성 이름 = "ID"유형 = "INT"Null 허용 = "false"StoreGeneratedPattern = "Identity"

누락 된 항목이 있습니까? 모델에이 열에 값이 필요 없다는 것을 어떻게 알릴 수 있습니까?

답변

0

"값이 필요합니다"오류가 발생하는 위치를 말하지 않습니다. 클라이언트 모델의 정수 값은 기본적으로 0이되므로 항상 값이 있습니다. 스택을 보지 않고서는 오류가 다른 곳에서 오는 것입니다. 오류가 표시되면 스택을보고 응용 프로그램의 어느 부분이 오류를 일으키는 지 파악하십시오.

+1

당신 맞아. 그것은 데이터베이스와 관련이 없습니다. UpdateModel (엔터티)이 FormCollection을 받으면 실패합니다. 엔터티를 전달할 때 다른 방법으로 ModelState.IsValid = false를 시도합니다. ID 필드에 대해 "값이 필요합니다"유효성이 반환됩니다. –

1

수수께끼가 풀렸다. 문제는 항상 "ID"를 ID 열의 열 이름으로 사용하는 내 명명 규칙의 결과 인 것으로 보입니다.

내가 라우팅 엔진이

조치로이 따기입니다

http://.../Vacancy/Create

호출 된 = 만들기; ID = ""를지도 노선에서

"{컨트롤러}/{동작}/{ID}는 모델에 VacancyID" "

는에 ID 열 이름을 변경"모든 것이 예상대로 작동 짜잔.

0

나는 ... 그 그들은 어쨌든위한 무엇을, 사용자 정의 경로를 만들 것입니다 당신이 당신의 데이터베이스 스키마를 변경하지 않으려면

0

당신은 id 매개 변수없이 규칙을 라우팅 추가 할 수 있습니다

routes.MapRoute(
    "Create", 
    "{controller}/Create", 
    new { action = "Create" } 
);