요구사항: 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 검사를 생성하지 않습니다.
참조:하이퍼링크 로그인이 보입니다.
|