2014-03-07 2 views
0

암시 적으로 'short?'유형을 변환 할 수 없습니다. 'short'to LocalAmount = t.EmpNo. 나는 Convert.ToInt16(t.EmpNo)를 사용하지만 그때 'join' 절에 오류가 발생하고 "incorrect", "type inference failed..."LINQ : 단락을 단락으로 변환 할 수 없습니까?

public class AccountTransaction 
    { 
     public Int16 LocalAmount { get; set; } 
     public String AccountNumber { get; set; } 
    } 

    public static IEnumerable<AccountTransaction> GetAllTransactions() 
    { 
     using (var context = new SQL_TA_SCOREBOARDEntities1()) 
     { 
      return (from t in context.EmployeeAccesses 
        join acc in context.View_HCM 
         on t.EmpNo equals acc.EmpNo 
        select new AccountTransaction 
        { 
         LocalAmount = t.EmpNo, 
         AccountNumber = acc.EmailAddress 

        }).ToList(); 
     } 
    } 
+0

"켜기 (Int16) t.EmpNo는 acc.EmpNo와 동일하지 않습니다" – Rex

+0

DB 백엔드에서 'EmployeeAccesses.EmpNo'는 명시 적으로'NOT NULL '이 아닌 것으로 추정됩니다. 'public Int16 LocalAmount'을'public Int16'으로 변경하는 것을 고려해보십시오. LocalAmount'. – jdphenix

+0

LINQ-to-SQL 또는 EF를 사용하고 있습니까? 어떤 .NET 버전? – jdphenix

답변

1

귀하의 오류 메시지가 t.EmpNo가 널 (NULL) Int 인 16.와 Questionmark 뒤에 짧은 참조임을 명시 될 것인가?

'short?' to 'short'는 - 어떤 말한다 :이 값이 null이 될 수 있다는 것을 나는 물음표가 정의하는 Int16Int16?을 변환 할 수 없습니다. 당신이 당신의 모델을 변경하는 경우

그래서, 당신은 아무것도를 구문 분석 할 필요가 없습니다,하지만 당신은 t.EmpNo.Value

public class AccountTransaction 
{ 
    public Int16? LocalAmount { get; set; } 
    public String AccountNumber { get; set; } 
} 
+0

잠깐, 내 두 번째 옵션은 유감스럽게 생각합니다. 그걸로 '참여'에 오류가 발생했습니다. 그러나 Convert.ToInt16을 제거하면 암묵적으로 짧은 것으로 변환 할 수 없습니다. –

+0

감사합니다. 이제 그 나이가 들었습니다. "조인 절에있는 표현식 중 하나의 유형이 올바르지 않습니다. 유형 추론이 'join'호출에서 실패했습니다." 오류. 지금 무엇을해야합니까? –

0

그것은 EMPNO가 null 않을 것입니다 가능성이 높습니다하고 EMPNO의 중 하나에 널 (NULL)임을를 사용할 필요가 데이터베이스는 다른 한편은 그렇지 않습니다. 둘 다 Nullable이 아닌지 확인하십시오. 어떤 이유로 든 Null이 될 수 있어야하는 경우에는 db에서 null을 모두 가져야합니다. 이 상황이 발생하여 db로 수정 한 경우 엔티티 프레임 워크 모델을 다시로드하고 코드를 다시 시험해야합니다. 공개 Int16을 변경해야 할 수도 있습니다. LocalAmount {get; 세트; } 공용 Int16 LocalAmount {get; 세트; }.

기본적으로 : Empno는 어디에서나 null을 사용할 수 없거나 모든 곳에서 Null 할 수 있어야합니다. 데이터베이스와 코드에서.

+0

또는 .GetValueOrDefault()를 사용하여 Int16? 및 Int16 – SkeetJon

+0

계몽주의에 감사드립니다! 이제는 개념을 이해하기 시작했습니다. 충분한 인원이 있다면 나는 투표 할거야. :( –

관련 문제