2016-11-06 3 views
1

현재 Entity Framework를 사용하여 .net CORE에서 웹 API를 만들고 있습니다. Entity Framework 핵심 linq 쿼리가 InvalidCastException을 반환합니다.

내가 LINQ와 ID에 의해 하나의 레코드를 선택하려고 할 때마다

, 나는 다음과 같은 오류 얻을 : 내가 가지고있는

int id = 1; 
User user = context.Users.First(i => i.UserId == id); 

:이 오류가 발생

An exception of type 'System.InvalidCastException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code.

Additional information: Unable to cast object of type 'System.Int32' to type 'System.Char'.

을 나는 다음과 같은 LINQ 쿼리를 실행할 때마다 이미 확인되었으며 필드 UserId과 변수 id은 모두 정수입니다. 또한 테이블에는 충분한 요소가 들어 있고 id이 1 인 행이 있습니다.

아무도 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?

편집 :

public class User 
{ 
    public int UserId { get; set; } 
    (...) 
} 
+1

나는 아직이 질문에 답할 수있는 충분한 정보가 없다고 생각합니다. 최소한 테이블 정의와 클래스 정의도 필요합니다. – hvd

+0

i.UserId == id 대신 i.UserId.Equals (id)를 사용해보십시오 –

+0

@hvd'User' 모델의 일부를 추가했습니다. – Max

답변

1

주 : 대답은 실제로 원래의 질문 아래에 코멘트에 제공되었다 여기에 User 모델의 일부입니다. 여기를 약간 더 추가하여보다 명확하고 명확하게 만듭니다.


엔티티 프레임 워크는 분명히 각 테이블에 여러 열을 나타내는 속성을 통해 데이터베이스 테이블의 C# 클래스를 매핑합니다. 이제 이러한 속성 중 하나의 데이터 유형이 데이터베이스의 해당 열의 데이터 유형과 호환되지 않으면 일치하지 않는 속성이 외관과 직접적으로 관련되지 않은 경우에도 해당 테이블에서 아무 것도 가져 오려고 시도하면 System.InvalidCastException가 표시됩니다 -쪽으로. 질문에

의 쿼리는

User user = context.Users.First(i => i.UserId == id); 

무엇을 인출되고있는 것은의 인스턴스이기 때문에 모두 id과 재산 UserId 해당 이제, 여기에 유효하고 서로 호환되는지는 중요하지 않습니다 전체 클래스 User.

User의 다른 속성 유형이 데이터베이스의 user 테이블에 같은 이름의 열과 호환되지 않으므로 매핑하려고 시도 할 때 위 예외가 throw됩니다.

+0

나는 이것을 해결책으로 표시했다. 감사! – Max

관련 문제