Anforderungen: Wenn EF linq-to-sql- oder lambda-Ausdrücke verwendet, um die Datenbank abzufragen, helfen die von EF generierten SQL-Anweisungen dabei, einige Bedingungen IST NULL oder NICHT NULL hinzuzufügen.
Beispiel 1:
Es erzeugt eine SQL-Anweisung wie diese:
AUSWÄHLEN [Extent2]. [UserStatus] AS [UserStatus], [Extent1]. [Id] AS [Id] VON [dbo]. [EmailInfo] AS [Extent1] INNER JOIN [dbo]. [Konto] WIE [Extent2] AUF ([Extent1].[ Adresse] = [Extent2]. [E-Mail]) ODER (([Extent1].[ Adresse] IST NULL) UND ([Extent2].[ E-Mail] IST NULL))
Beispiel 2:
Es erzeugt eine SQL-Anweisung wie diese:
AUSWÄHLEN [Extent1]. [Id] AS [Id], [Extent1]. [Name] AS [Name], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Position] AS [Position], [Extent1]. [_CreateTime] ALS [_CreateTime], [Extent1]. [_UpdateTime] ALS [_UpdateTime] VON [dbo]. [Klassifizierung] AS [Extent1] WO ([Extent1].[ Name] IN (N'Android', N'Solaris')) UND ([Extent1].[ Name] IST NICHT NULL)
Wenn du vermeiden möchtest, dass EF diese zusätzlichen NULL-Bedingungen erzeugt, kannst du auf die folgenden Punkte zurückgreifen.
Configure die Eigenschaft DbContextConfiguration.UseDatabaseNullSemantics
Erhält oder setzt einen Wert, der angibt, ob Datenbank-Nullsemantik beim Vergleich zweier Operanden angezeigt werden soll, und beide sind wahrscheinlich null. Der Standardwert ist falsch.
Der Code lautet wie folgt:
Zum Beispiel: Wenn UseDatabaseNullSemantics wahr ist, dann wird (operand1 == operand2) in (operand1 = operand2) umgewandelt; Wenn UseDatabaseNullSemantics falsch ist, wird es umgewandelt in (((operand1 = operand2) UND (NOT (operand1 ist null oder operand2 ist null))) oder ((operand1 ist null) und (operand2 ist NULL))).
Dokumentation (Es gibt einen Fehler in der Dokumentationsbeschreibung):Der Hyperlink-Login ist sichtbar.
Feld zur Hinzufügung des Attributs [Erforderlich]
Nachdem EF das [Required]-Attribut zur Objekteigenschaft hinzugefügt hat, erlaubt es tatsächlich nicht, dass das Attribut (Feld) in der Datenbank NULL ist.Nach Ausführung des Migrationsbefehls darf das Feld nicht NULL seinDa das Feld in der Datenbank nicht NULL sein darf, erzeugt EF natürlich keine NULL-Prüfungen in den für dieses Feld erstellten SQL-Anweisungen.
Referenz:Der Hyperlink-Login ist sichtbar.
|