Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3654|Svare: 0

[Kilde] EF SQL-setninger genererer automatisk IS NULL eller IS NOT NULL

[Kopier lenke]
Publisert på 21.06.2023 22:42:18 | | | |
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.






Foregående:ASP.NET Core (tjueen) konfigurasjonsalternativer er forskjellen mellom AddOptions og Configure
Neste:Ajax-hooken for webutvikling avskjærer alle XMLHttpRequest-forespørsler
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com