2014-09-15 3 views
1

기존 시스템에서 마이그레이션하는 중입니다. 저장 프로 시저의 추가/수정을 포함하여 데이터베이스를 수정할 수 없습니다.EF 6 - 저장 프로 시저 중복 결과 열

The data reader is incompatible with the specified 'Brightree.HomeHealth.Repository.sp_CPC_GetUserInfoByUID_Result'. A member of the type, 'useraccount_uid1', does not have a corresponding column in the data reader with the same name.

그래서 그것은 다음과 같습니다, 나는 런타임 오류 다음 얻을 그러나

public virtual ObjectResult<sp_CPC_GetUserInfoByUID_Result> sp_CPC_GetUserInfoByUID(Nullable<System.Guid> sessionID, Nullable<System.Guid> userUID) 
{ 
    var sessionIDParameter = sessionID.HasValue ? 
      new ObjectParameter("SessionID", sessionID) : 
      new ObjectParameter("SessionID", typeof(System.Guid)); 

    var userUIDParameter = userUID.HasValue ? 
      new ObjectParameter("userUID", userUID) : 
      new ObjectParameter("userUID", typeof(System.Guid)); 

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_CPC_GetUserInfoByUID_Result>("sp_CPC_GetUserInfoByUID", sessionIDParameter, userUIDParameter); 
} 

: 나는 성공적으로 EDMX 모델에 저장 프로 시저를 추가 한

, 그것은 다음과 같은 코드를 생성 EF는 useraccount_uiduseraccount_uid1의 두 매핑을 생성했습니다. 저장 프로 시저가 useraccount_uid이라는 두 개의 열이있는 테이블을 반환하기 때문입니다.

EF 모델에서이를 반올림하는 방법이 있습니까?

답변

1

솔루션이 정말 간단했다. EF가 저장 프로 시저를 어떻게 모델링했는지 간과했다. 모델에 저장 프로 시저를 추가하면 기본적으로 실제로 두 개의 참조가 추가됩니다.

  1. DB에서 모델의 기본 기능으로 매핑 - 이러한 매핑을 편집 할 수 없습니다.
  2. "함수 가져 오기"- 결과 집합을 코드 모델에 매핑하는 부분입니다.

그래서 EDMX 모델 브라우저에서 함수 가져 오기 폴더를 찾아야했습니다. 여기에는 저장 프로 시저가 나열되었습니다. 함수를 마우스 오른쪽 버튼으로 클릭하면 "함수 가져 오기 매핑"옵션이 나타납니다. 그러면 매핑 세부 정보 창이 열립니다. 여기서 단순히 열 이름을 수정할 수 있습니다.