Zahteve: Ko EF uporablja linq to sql ali lambda izraze za poizvedbo v bazi, nam SQL stavki, ki jih generira EF, pomagajo dodati nekatere pogoje IS NULL ali NOT NULL.
Primer 1:
Generira SQL izjavo, kot je ta:
IZBRATI [Obseg2]. [UserStatus] AS [UserStatus], [Extent1]. [Id] AS [Id] IZ [dbo]. [EmailInfo] AS [Obseg1] INNER JOIN [dbo]. [Račun] AS [Extent2] NA ([Extent1].[ Naslov] = [Obseg2]. [E-pošta]) ALI (([Extent1].[ Naslov] JE NULL) IN ([Extent2].[ E-pošta] JE NEVELJAVNA))
Primer 2:
Generira SQL izjavo, kot je ta:
IZBRATI [Extent1]. [Id] AS [Id], [Extent1]. [Ime] AS [Ime], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Položaj] AS [Pozicija], [Extent1]. [_CreateTime] KOT [_CreateTime], [Extent1]. [_UpdateTime] KOT [_UpdateTime] IZ [dbo]. [Klasifikacija] AS [Obseg1] KJER ([Extent1].[ Ime] IN (N'Android', N'Solaris')) IN ([Extent1].[ Ime] NI NIČLEN)
Če želite preprečiti, da bi EF generirala te dodatne NIČELNE pogoje, se lahko sklicujete na naslednje.
Konfigurirajte lastnost DbContextConfiguration.UseDatabaseNullSemantics
Dobi ali nastavi vrednost, ki kaže, ali naj se pri primerjavi dveh operandov prikaže ničelna semantika baze podatkov, pri čemer sta oba verjetno ničelna. Privzeta vrednost je napačna.
Koda je naslednja:
Na primer: Če je UseDatabaseNullSemantics resničen, potem bo (operand1 == operand2) pretvorjen v (operand1 = operand2); Če je UseDatabaseNullSemantics false, se pretvori v (((operand1 = operand2) IN (NOT (operand1 JE NULL ALI operand2 JE NULL))) ALI (operand1 JE NULL) IN (operand2 JE NULL))).
Dokumentacija (V opisu dokumentacije je napaka):Prijava do hiperpovezave je vidna.
polje za dodajanje atributa [Obvezno]
Ko EF doda atribut [Required] k lastnosti objekta, dejansko ne dovoli, da bi bil atribut (polje) NULL v bazi podatkov.Po izvedbi ukaza za migracijo polje ne sme biti NULLKer polje v podatkovni bazi ne sme biti NULL, EF naravno ne generira nekaterih NULL preverjanj v SQL stavkih, ustvarjenih za to polje.
Referenčni:Prijava do hiperpovezave je vidna.
|