Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 3654|Odpověď: 0

[Zdroj] EF SQL příkazy automaticky generují IS NULL nebo IS NOT NULL

[Kopírovat odkaz]
Zveřejněno 21.06.2023 22:42:18 | | | |
Požadavky: Když EF používá linq to sql nebo lambda výrazy k dotazování databáze, SQL příkazy generované EF nám pomohou přidat některé podmínky IS NULL nebo NOT NULL.

Příklad 1:

Generuje SQL příkaz takto:

VYBRAT
    [Extent2]. [UserStatus] AS [UserStatus],
    [Extent1]. [Id] AS [Id]
    FROM [dbo]. [EmailInfo] AS [Extent1]
    INNER JOIN [dbo]. [Účet] AS [Extent2] NA ([Extent1].[ Adresa] = [Extent2]. [Email]) NEBO (([Extent1].[ Adresa] JE NULL) A ([Extent2].[ E-mail] JE NULL))



Příklad 2:

Generuje SQL příkaz takto:

VYBRAT
    [Extent1]. [Id] AS [Id],
    [Extent1]. [Jméno] AS [Jméno],
    [Extent1]. [ParentId] AS [ParentId],
    [Extent1]. [Pozice] AS [Pozice],
    [Extent1]. [_CreateTime] AS [_CreateTime],
    [Extent1]. [_UpdateTime] JAKO [_UpdateTime]
    FROM [dbo]. [Klasifikace] AS [Extent1]
    KDE ([Extent1].[ Název] IN (N'Android', N'Solaris')) A ([extent1].[ Název] NENÍ NULL)



Pokud chcete zabránit tomu, aby EF generoval tyto další NULL podmínky, můžete se podívat na následující.

Konfigurujte vlastnost DbContextConfiguration.UseDatabaseNullSemantics

Získá nebo nastaví hodnotu, která určuje, zda má při porovnání dvou operandů zobrazit databázovou nulovou sémantiku, a oba pravděpodobně budou null. Výchozí hodnota je nepravdivá.

Kód je následující:


Například:
Pokud je UseDatabaseNullSemantics pravdivý, pak (operand1 == operand2) bude převedeno na (operand1 = operand2);
Pokud je UseDatabaseNullSemantics nepravdivá, bude převedena na (((operand1 = operand2) A (NOT (operand1 JE NULL NEBO operand2 JE NULL))) NEBO (operand1 JE NULL) A (operand2 JE NULL))).

Dokumentace (V popisu dokumentace je chyba):Přihlášení k hypertextovému odkazu je viditelné.

pole pro přidání atributu [Required]

Po přidání atributu [Required] do vlastnosti objektu EF ve skutečnosti nepovoluje, aby atribut (pole) byl v databázi NULL.Po provedení příkazu pro migraci není povoleno být pole NULLProtože pole nesmí být v databázi NULL, EF přirozeně negeneruje některé NULL kontroly v SQL příkazech generovaných pro toto pole.

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.






Předchozí:ASP.NET Základní (jednadvacet) konfiguračních možností je rozdíl mezi AddOptions a Configure
Další:Ajax-hook pro webový vývoj zachytává všechny požadavky XMLHttpRequest
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com