Requisiti: Quando EF utilizza espressioni linq to sql o lambda per interrogare il database, le istruzioni SQL generate da EF ci aiuteranno ad aggiungere alcune condizioni IS NULL o NOT NULL.
Esempio 1:
Genera un'istruzione SQL come questa:
SELEZIONARE [Estensione 2]. [Stato dell'utente] COME [UserStatus], [Estensione 1]. [Id] COME [Id] DA [dbo]. [InfoEmail] COME [Estensione1] INNER JOIN [dbo]. [Conto] COME [Estensione2] SU ([Estensione1].[ Indirizzo] = [Estensione2]. [Email]) OPPURE (([Estensione1].[ Indirizzo] È NULLO) E ([Estensione2].[ Email] È NULL))
Esempio 2:
Genera un'istruzione SQL come questa:
SELEZIONARE [Estensione 1]. [Id] COME [Id], [Estensione 1]. [Nome] COME [Nome], [Estensione 1]. [ParentId] AS [ParentId], [Estensione 1]. [Posizione] COME [Posizione], [Estensione 1]. [_CreateTime] COME [_CreateTime], [Estensione 1]. [_UpdateTime] COME [_UpdateTime] DA [dbo]. [Classificazione] COME [Estensione1] DOVE ([Estensione1].[ Nome] IN (N'Android', N'Solaris')) E ([Estensione1].[ Nome] NON È NULLO)
Se vuoi evitare che EF generi queste condizioni NULL aggiuntive, puoi fare riferimento a quanto segue.
Configura la proprietà DbContextConfiguration.UseDatabaseNullSemantics
Ottiene o imposta un valore che indica se mostrare la semantica nulla del database quando si confrontano due operandi e probabilmente entrambi sono nulli. Il valore predefinito è falso.
Il codice è il seguente:
Per esempio: Se UseDatabaseNullSemantics è vero, allora (operando1 == operando2) sarà convertito in (operando1 = operando2); Se UseDatabaseNullSemantics è falso, verrà convertito in (((operando1 = operando2) E (NON (operando1 È NULLO O operando2 È NULLO))) OPPURE ((operando1 È NULLO) E (operando2 È NULLO))).
Documentazione (C'è un errore nella descrizione della documentazione):Il login del link ipertestuale è visibile.
campo per aggiungere l'attributo [Required]
Dopo che EF aggiunge l'attributo [Required] alla proprietà dell'oggetto, in realtà non permette che l'attributo (campo) sia NULL nel database.Dopo aver eseguito il comando di migrazione, il campo non può essere NULLPoiché il campo non può essere NULL nel database, EF naturalmente non genera alcuni controlli NULL nelle istruzioni SQL generate per quel campo.
Riferimento:Il login del link ipertestuale è visibile.
|