Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 3654|Svar: 0

[Källa] EF SQL-satser genererar automatiskt ÄR NULL eller ÄR INTE NULL

[Kopiera länk]
Publicerad på 2023-06-21 22:42:18 | | | |
Krav: När EF använder linq till sql eller lambda-uttryck för att fråga databasen, hjälper de SQL-satser som genereras av EF oss att lägga till vissa IS NULL eller NOT NULL-villkor.

Exempel 1:

Den genererar en SQL-sats som denna:

UTVALD
    [Extent2]. [UserStatus] AS [UserStatus],
    [Extent1]. [Id] AS [Id]
    FRÅN [dbo]. [EmailInfo] AS [Extent1]
    INNER JOIN [dbo]. [Konto] SOM [Extent2] ON ([Extent1].[ Adress] = [Omfattning2]. [E-post]) ELLER (([Extent1].[ Adress] ÄR NULL) OCH ([Extent2].[ E-post] ÄR NULL))



Exempel 2:

Den genererar en SQL-sats som denna:

UTVALD
    [Extent1]. [Id] SOM [Id],
    [Extent1]. [Namn] AS [Namn],
    [Extent1]. [ParentId] SOM [ParentId],
    [Extent1]. [Position] AS [Position],
    [Extent1]. [_CreateTime] SOM [_CreateTime],
    [Extent1]. [_UpdateTime] SOM [_UpdateTime]
    FRÅN [dbo]. [Klassificering] AS [Extent1]
    DÄR ([Extent1].[ Namn] IN (N'Android', N'Solaris')) OCH ([Extent1].[ Namn] ÄR INTE NULL)



Om du vill undvika att EF genererar dessa ytterligare NULL-villkor kan du hänvisa till följande.

Konfigurera egenskapen DbContextConfiguration.UseDatabaseNullSemantics

Får eller sätter ett värde som indikerar om databasens null-semantik ska visas när två operander jämförs, och båda är sannolikt null. Standardvärdet är falskt.

Koden är följande:


Till exempel:
Om UseDatabaseNullSemantics är sann, så kommer (operand1 == operand2) att konverteras till (operand1 = operand2);
Om UseDatabaseNullSemantics är falsk, kommer den att konverteras till (((operand1 = operand2) OCH (NOT (operand1 ÄR NULL ELLER operand2 ÄR NULL))) ELLER ((operand1 ÄR NULL) OCH (operand2 ÄR NULL))).

Dokumentation (Det finns ett fel i dokumentationsbeskrivningen):Inloggningen med hyperlänken är synlig.

fält för att lägga till attributet [Required]

Efter att EF lagt till attributet [Required] till objektegenskapen tillåter det faktiskt inte att attributet (fältet) är NULL i databasen.Efter att migreringskommandot har utförts får fältet inte vara NULLEftersom fältet inte får vara NULL i databasen, genererar EF naturligtvis inte vissa NULL-kontroller i de SQL-satser som genereras för det fältet.

Hänvisning:Inloggningen med hyperlänken är synlig.






Föregående:ASP.NET Core (tjugoett) konfigurationsalternativ är skillnaden mellan AddOptions och Configure
Nästa:Ajax-hooken för webbutveckling fångar upp alla XMLHttpRequest-förfrågningar
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com