Požiadavky: Keď EF použije linq to sql alebo lambda výrazy na dotazovanie databázy, SQL príkazy generované EF nám pomôžu pridať niektoré podmienky IS NULL alebo NOT NULL.
Príklad 1:
Generuje SQL príkaz takto:
VYBRAŤ [Extent2]. [UserStatus] AS [UserStatus], [Extent1]. [Id] AS [Id] FROM [dbo]. [EmailInfo] AS [Extent1] INNER JOIN [dbo]. [Účet] AS [Extent2] NA ([Extent1].[ Adresa] = [Rozsah2]. [Email]) ALEBO (([Extent1].[ Adresa] JE NULOVÁ) A ([Extent2].[ Email] JE NULL))
Príklad 2:
Generuje SQL príkaz takto:
VYBRAŤ [Extent1]. [Id] AS [Id], [Extent1]. [Meno] AS [Meno], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Pozícia] AS [Pozícia], [Extent1]. [_CreateTime] AKO [_CreateTime], [Extent1]. [_UpdateTime] AKO [_UpdateTime] FROM [dbo]. [Klasifikácia] AS [Extent1] KDE ([Extent1].[ Meno] IN (N'Android', N'Solaris')) A ([Extent1].[ Meno] NIE JE NULL)
Ak chcete zabrániť tomu, aby EF generoval tieto ďalšie NULL podmienky, môžete sa pozrieť na nasledujúce.
Konfigurujte vlastnosť DbContextConfiguration.UseDatabaseNullSemantics
Získa alebo nastaví hodnotu, ktorá určuje, či má pri porovnaní dvoch operandov zobraziť nulovú sémantiku databázy, pričom oba sú pravdepodobne nulové. Predvolená hodnota je nepravdivá.
Kód je nasledovný:
Napríklad: Ak platí UseDatabaseNullSemantics, potom (operand1 == operand2) sa prevedie na (operand1 = operand2); Ak je UseDatabaseNullSemantics nepravdivý, bude prevedený na (((operand1 = operand2) A (NOT (operand1 JE NULL ALEBO operand2 JE NULL))) ALEBO (operand1 JE NULL) A (operand2 JE NULL))).
Dokumentácia (V popise dokumentácie je chyba):Prihlásenie na hypertextový odkaz je viditeľné.
pole na pridanie atribútu [Povinné]
Po pridaní atribútu [Required] do vlastnosti objektu EF v skutočnosti nedovolí, aby atribút (pole) bol v databáze NULL.Po vykonaní príkazu na migráciu nie je pole povolené byť NULLKeďže pole nesmie byť v databáze NULL, EF prirodzene negeneruje niektoré NULL kontroly v SQL príkazoch generovaných pre dané pole.
Referencia:Prihlásenie na hypertextový odkaz je viditeľné.
|