이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3654|회답: 0

[출처] EF SQL 문은 자동으로 IS NULL 또는 IS NOT NULL을 생성합니다

[링크 복사]
게시됨 2023. 6. 21. 오후 10:42:18 | | | |
요구사항: EF가 linq to sql 또는 람다 표현식을 사용해 데이터베이스를 조회할 때, EF가 생성하는 SQL 문은 IS NULL 또는 NOT NULL 조건을 추가하는 데 도움을 줍니다.

예시 1:

이 문은 다음과 같은 SQL 문장을 생성합니다:

고르다
    [확장2]. [사용자 상태] AS [사용자 상태],
    [범위1]. [동일 지] [동일 등]
    [dbo]에서 왔습니다. [이메일정보] AS [확장1]
    내부 조인 [dbo]. [계정] AS [확장2] 온([확장1].[ 주소] = [확장2]. [이메일]) 또는 (([확장1].[ 주소] 는 NULL) 그리고 ([Extent2].[ 이메일] IS NULL))



예시 2:

이 문은 다음과 같은 SQL 문장을 생성합니다:

고르다
    [범위1]. [id] [id]와 같이,
    [범위1]. [이름] [이름],
    [범위1]. [ParentId] [ParentId],
    [범위1]. [위치] AS [Position],
    [범위1]. [_CreateTime] [_CreateTime],
    [범위1]. [_UpdateTime] [_UpdateTime]
    [dbo]에서 왔습니다. [분류] AS [확장1]
    여기서 ([확장1].[ 이름] IN (N'Android', N'Solaris')) 그리고 ([Extent1].[ 이름은 null이 아닙니다)



EF가 이러한 추가 NULL 조건을 생성하는 것을 피하고 싶다면, 다음 항목을 참고할 수 있습니다.

DbContextConfiguration.UseDatabaseNullSemantics 속성을 설정하세요

두 피연산자를 비교할 때 데이터베이스 널 의미를 표시할지 여부를 나타내는 값을 받거나 설정하며, 두 경우 모두 널일 가능성이 높습니다. 기본 값은 false입니다.

코드는 다음과 같습니다:


예를 들어:
만약 UseDatabaseNullSemantics가 참이라면, (operand1 == operand2)는 (operand1 = operand2)로 변환됩니다;
UseDatabaseNullSemantics가 false일 경우, (((operand1 = operand2) and (NOT (연산자1은 null이거나 연산자2는 null이다)) 또는 (((operand1 is null) and (operand2 IS NULL))로 변환됩니다.

문서화 (문서 설명에 오류가 있습니다):하이퍼링크 로그인이 보입니다.

필드를 통해 [Required] 속성을 추가합니다

EF가 객체 속성에 [Required] 속성을 추가한 후, 데이터베이스에서 속성(필드)이 NULL이 되는 것을 실제로 허용하지 않습니다.마이그레이션 명령을 실행한 후에는 필드가 NULL이 될 수 없습니다데이터베이스에서 필드가 NULL이 될 수 없기 때문에, EF는 해당 필드에서 생성된 SQL 문에서 일부 NULL 검사를 생성하지 않습니다.

참조:하이퍼링크 로그인이 보입니다.






이전의:ASP.NET 코어(21개) 구성 옵션이 AddOptions와 Configure 사이의 차이입니다
다음:웹 개발용 ajax-hook은 모든 XMLHttpRequest 요청을 가로챕니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com