2010-02-17 1 views
1

WROX "Beginning ASP.NET MVC 1.0"책을 통해 작업했습니다. 이상한 '오류'가 발생했습니다.연산자 ==는 Linq의 Guid 또는 int (MVC 북 예제)에 적용 할 수 없습니다.

"Operator '=='은 (는) 'System.Guid'또는 'int'유형의 피연산자에 적용 할 수 없습니다. 질문의 줄은 다음과 같습니다.

(p => p.ID_Officers == id).Single(); 

전체 코드는 아래에 있으며 임원은 내 테이블이고, ID_Officers는 내 ID 필드입니다. (나는 'p'대신 'o'를 사용할 수 있다고 상상한다.)

public ActionResult IndividualOfficer(int id) 
    { 
     OfficersDataContext dataContext = new OfficersDataContext(); 
     Officer officer = dataContext.Officers.Where 
      (p => p.ID_Officers == id).Single(); 
     ViewData["OfficerName"] = officer.OfficerName; 
     ViewData["Officer"] = officer; 

     return View(); 
    } 

이 초보자를위한 지혜의 말씀은 인정 될 것입니다.

이 책이 초보자에게 추천되었지만, 소년이 말리더라도 추가 할 수도 있습니다. 연습 중에 추가/입력해야 할 것이 무엇인지 분명히 알기 쉽게 명확하게 정리되어 있습니다.하지만 MVC로 오는 숙련 된 프로그래머를 위해 작성된 것 같습니다. 오히려 초보자 프로그래머.

그래서, 누구든지 내 시간과 이빨을 더 쉽게 침투 할 수있는 초보자 친숙한 책 (책과 독서가 좋아요)을 알고 있습니까?

도움과지도를 보내 주셔서 감사합니다.

마이크

답변

3

매우 간단합니다.

idint입니다. p.ID_Officers은 오류 메시지 상태로 이 아니며 int과 동등한 지 검사 할 수없는 Guid입니다. 두 가지 유형이 있습니다.

id 컨트롤러 방법의 출처가 확실하지 않습니다. 어떤 경우에는 임원 명단을 사용자에게 제시해야하며 링크 정의에 p.ID_Officers을 포함하는 각 임원을 가리키는 링크를 구성해야하지만 경로는 int입니다. 경로가 어떻게 구성되어 있는지 또는 장교 링크가 구성되어 있는지 보지 않고는 그 이상의 힌트를 줄 수는 없습니다.

0

음, 문제는 id 당신이 유형 int이다에 비교하는 동안 p.ID_OfficersSystem.Guid 것입니다. 따라서 메서드의 서명을

public ActionResult IndividualOfficer(Guid id) 

으로 변경할 수 있습니다. 이제 컴파일 할 수 있어야합니다.

다른 옵션은 데이터베이스 스키마의 ID 열을 uniqueidentifier (System.Guid.net이 됨) 대신 int으로 변경하는 것입니다.

+1

경로와 링크가 올바르게 구성되었다고 가정합니다. 그렇지 않은 경우, 장교 링크는 404로 끝나거나 다른 방법으로 분리 될 수 있습니다. 아니면 그는 운이 좋을 수도 있습니다. – Will

+0

ID_Officer를 int로 변경합니다. 나는 그것이 옳은 것처럼 보였기 때문에 uniqueidentifier를 시도했다. .. 아하. 나의 노선에 관해서는 - 나는 아직 그것들을 건드리지 않았기 때문에 그것이 시스템 디폴트라고 상상한다. 고유를 int로 단순히 변경하는 것이 허용되지 않습니다. 잘 됐네, 내가 배운 또 다른 것. 나는 데이터베이스를 제거해야하고 그 다음에 ... – RocketGoal

관련 문제