Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3654|Antwoord: 0

[Bron] EF SQL-instructies genereren automatisch IS NULL of IS NIET NULL

[Link kopiëren]
Geplaatst op 21-06-2023 22:42:18 | | | |
Vereisten: Wanneer EF linq to sql- of lambda-expressies gebruikt om de database te bevragen, zullen de door EF gegenereerde SQL-statements ons helpen enkele IS NULL of NOT NULL-voorwaarden toe te voegen.

Voorbeeld 1:

Het genereert een SQL-instructie als volgt:

SELECTEREN
    [Extent2]. [UserStatus] AS [UserStatus],
    [Extent1]. [Id] AS [Id]
    VAN [dbo]. [E-mailInfo] AS [Extent1]
    INNER JOIN [dbo]. [Account] ALS [Extent2] ON ([Extent1].[ Adres] = [Omvang2]. [E-mail]) OF (([Extent1].[ Adres] IS NULL) EN ([Extent2].[ E-mail] IS NULL))



Voorbeeld 2:

Het genereert een SQL-instructie als volgt:

SELECTEREN
    [Extent1]. [Id] AS [Id],
    [Extent1]. [Naam] AS [Naam],
    [Extent1]. [ParentId] AS [ParentId],
    [Extent1]. [Positie] AS [Positie],
    [Extent1]. [_CreateTime] ALS [_CreateTime],
    [Extent1]. [_UpdateTime] ALS [_UpdateTime]
    VAN [dbo]. [Classificatie] AS [Extent1]
    WAAR ([Extent1].[ Naam] IN (N'Android', N'Solaris')) EN ([Extent1].[ Naam] IS NIET NUL)



Als je wilt voorkomen dat EF deze extra NULL-condities genereert, kun je het volgende raadplegen.

Configureer de eigenschap DbContextConfiguration.UseDatabaseNullSemantics

Krijgt of stelt een waarde die aangeeft of de nul-semantiek van de database moet worden weergegeven bij het vergelijken van twee operanden en beide zijn waarschijnlijk nul. De standaardwaarde is onwaar.

De code is als volgt:


Bijvoorbeeld:
Als UseDatabaseNullSemantics waar is, dan wordt (operand1 == operand2) omgezet naar (operand1 = operand2);
Als UseDatabaseNullSemantiek onwaar is, wordt deze omgezet naar (((operand1 = operand2) EN (NOT (operand1 IS NULL OF operand2 IS NULL))) OF ((operand1 IS NULL) EN (operand2 IS NULL))).

Documentatie (Er staat een fout in de documentatiebeschrijving):De hyperlink-login is zichtbaar.

veld om het [Vereist] attribuut toe te voegen

Nadat EF het [Vereist] attribuut aan de objecteigenschap toevoegt, staat het eigenlijk niet toe dat het attribuut (veld) in de database NULL is.Na het uitvoeren van het migratiecommando mag het veld niet NULL zijnOmdat het veld niet NULL mag zijn in de database, genereert EF natuurlijk geen NULL-controles in de SQL-instructies die voor dat veld zijn gemaakt.

Referentie:De hyperlink-login is zichtbaar.






Vorig:ASP.NET Core (eenentwintig) configuratieopties zijn het verschil tussen AddOptions en Configure
Volgend:De ajax-hook voor webontwikkeling onderschept alle XMLHttpRequest-verzoeken
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com