Wymagania: Gdy EF używa wyrażeń linq do SQL lub lambda do zapytań bazy danych, instrukcje SQL generowane przez EF pomogą nam dodać niektóre warunki IS NULL lub NOT NULL.
Przykład 1:
Generuje on polecenie SQL w ten sposób:
WYBRAĆ [Zakres2]. [UserStatus] AS [UserStatus], [Extent1]. [Id] AS [Id] FROM [dbo]. [EmailInfo] AS [Zakres1] INNER JOIN [dbo]. [Konto] AS [Extent2] NA ([Extent1].[ Adres] = [Zakres2]. [Email]) LUB (([Extent1].[ adres] JEST NULL) ORAZ ([Extent2].[ Email] JEST NIEWAŻNE))
Przykład 2:
Generuje on polecenie SQL w ten sposób:
WYBRAĆ [Extent1]. [Id] AS [Id], [Extent1]. [Imię] AS [Imię], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Pozycja] AS [Pozycja], [Extent1]. [_CreateTime] AS [_CreateTime], [Extent1]. [_UpdateTime] JAKO [_UpdateTime] FROM [dbo]. [Klasyfikacja] AS [Zakres1] GDZIE ([Extent1].[ Nazwa] IN (N'Android', N'Solaris')) Oraz ([Extent1].[ Nazwa] NIE JEST NULL)
Jeśli chcesz uniknąć generowania tych dodatkowych warunków NULL przez EF, możesz odnieść się do następujących.
Konfiguruj właściwość DbContextConfiguration.UseDatabaseNullSemantics
Otrzymuje lub ustawia wartość wskazującą, czy wyświetlić semantykę nullowej bazy danych przy porównaniu dwóch operandów i oba prawdopodobnie będą zerowe. Domyślna wartość jest fałszywa.
Kod jest następujący:
Na przykład: Jeśli UseDatabaseNullSemantics jest prawdziwy, to (operand1 == operand2) zostanie przekształcony w (operand1 = operand2); Jeśli UseDatabaseNullSemantics jest fałszywy, zostanie przekształcony w (((operand1 = operand2) I (NOT (operand1 JEST NULL LUB operand2 JEST NULL))) LUB (operand1 JEST NULL) ORAZ (operand2 JEST NULL))).
Dokumentacja (W opisie dokumentacji jest błąd):Logowanie do linku jest widoczne.
pole dodające atrybut [Wymagane]
Po dodaniu atrybutu [Wymagane] do właściwości obiektu przez EF, w rzeczywistości nie pozwala on na to, aby atrybut (pole) był NULL w bazie danych.Po wykonaniu polecenia migracji pole nie może być NULLPonieważ pole nie może być NULL w bazie danych, EF naturalnie nie generuje niektórych sprawdzeń NULL w instrukcjach SQL generowanych dla tego pola.
Odniesienie:Logowanie do linku jest widoczne.
|