Krav: Når EF bruker linq to sql- eller lambda-uttrykk for å spørre databasen, vil SQL-setningene generert av EF hjelpe oss med å legge til noen IS NULL eller NOT NULL-betingelser.
Eksempel 1:
Den genererer en SQL-setning som denne:
VELGE [Extent2]. [UserStatus] AS [UserStatus], [Omfang1]. [Id] AS [Id] FRA [dbo]. [EmailInfo] AS [Extent1] INNER JOIN [dbo]. [Konto] SOM [Extent2] ON ([Extent1].[ Adresse] = [Utstrekning2]. [E-post]) ELLER (([Extent1].[ Adresse] ER NULL) OG ([Extent2].[ E-post] ER NULL))
Eksempel 2:
Den genererer en SQL-setning som denne:
VELGE [Omfang1]. [Id] AS [Id], [Omfang1]. [Navn] AS [Navn], [Omfang1]. [ParentId] AS [ParentId], [Omfang1]. [Posisjon] AS [Posisjon], [Omfang1]. [_CreateTime] SOM [_CreateTime], [Omfang1]. [_UpdateTime] SOM [_UpdateTime] FRA [dbo]. [Klassifisering] AS [Extent1] HVOR ([Extent1].[ Navn] I (N'Android', N'Solaris')) OG ([Extent1].[ Navn] ER IKKE NULL)
Hvis du vil unngå at EF genererer disse ekstra NULL-betingelsene, kan du se på følgende.
Konfigurer egenskapen DbContextConfiguration.UseDatabaseNullSemantics
Får eller setter en verdi som indikerer om databasens null-semantikk skal vises når to operander sammenlignes, og begge er sannsynligvis null. Standardverdien er falsk.
Koden er som følger:
For eksempel: Hvis UseDatabaseNullSemantics er sann, vil (operand1 == operand2) konverteres til (operand1 = operand2); Hvis UseDatabaseNullSemantics er falsk, vil den bli konvertert til (((operand1 = operand2) OG (IKKE (operand1 ER NULL ELLER operand2 ER NULL))) ELLER ((operand1 ER NULL) OG (operand2 ER NULL))).
Dokumentasjon (Det er en feil i dokumentasjonsbeskrivelsen):Innloggingen med hyperkoblingen er synlig.
felt for å legge til attributten [Påkrevd].
Etter at EF legger til [Påkrevd]-attributtet til objektegenskapen, tillater det faktisk ikke at attributtet (feltet) er NULL i databasen.Etter å ha utført migrasjonskommandoen, får ikke feltet være NULLSiden feltet ikke får lov til å være NULL i databasen, genererer ikke EF naturlig noen NULL-sjekker i SQL-setningene som genereres for det feltet.
Referanse:Innloggingen med hyperkoblingen er synlig.
|