문제

메소드 매개 변수와 함께

Int16? id

그리고 linq에서 sql where clause

where !id.HasValue || m.Id == id

데이터 컨텍스트의 조건에 대한 결과 명령 텍스트는 다음과 같습니다.

Visualizer에서 :

SELECT [t0].[Id], [t0].[Name], [t0].[IsActive]
FROM [Model] AS [t0]
WHERE (CONVERT(Int,[t0].[Id])) = @p0
-------------------------------
@p0 [Int32]: 5

내 맵핑 클래스는 ID를 int16으로 가지고 있고 데이터베이스 자체는 열 유형을 smallint로 가지고 있으므로 왜 뒤에서 SQL이 매개 변수가 정수 (int32)가 아니라고 생각하는 이유는 무엇입니까 (int16).


열 매핑 :

    [Column(IsPrimaryKey = true, DbType="SmallInt NOT NULL", CanBeNull=false)]
    public Int16 Id { get; set; }
도움이 되었습니까?

해결책

읽을 위치 조항을 변경하십시오

where !id.HasValue || m.Id == id.Value

무효가되는 단편에 대해서는 그것을 버리는 것이 있습니다. 왜 그런지 잘 모르겠지만, 전에 이것에 뛰어 들어 추가를 발견했습니다. .Value 작동합니다.

다른 팁

흠 ... 나는 당신이 SQL에서! id.hasvalue를 표현하지 않는다는 것을 알았습니다. 아마도 이것은 포장되는 것과 관련된 일종의 속임수일까요? 나에게 가짜처럼 보이지만 내가 생각할 수있는 유일한 것.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top