Изисквания: Когато EF използва linq към sql или lambda изрази за заявка към базата данни, SQL операторите, генерирани от EF, ще ни помогнат да добавим някои условия IS NULL или NOT NULL.
Пример 1:
Той генерира SQL оператор по този начин:
ОТБРАН [Extent2]. [Потребителски статус] AS [UserStatus], [Extent1]. [Id] AS [Id] ОТ [dbo]. [ИмейлИнфо] AS [Extent1] ВЪТРЕШЕН JOIN [dbo]. [Сметка] AS [Extent2] ON ([Extent1].[ Адрес] = [Обхват2]. [Имейл]) ИЛИ (([Extent1].[ Адрес] Е NULL) и ([Extent2].[ Имейл] Е NULL))
Пример 2:
Той генерира SQL оператор по този начин:
ОТБРАН [Extent1]. [Id] AS [Id], [Extent1]. [Име] AS [Име], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Позиция] AS [Позиция], [Extent1]. [_CreateTime] AS [_CreateTime], [Extent1]. [_UpdateTime] AS [_UpdateTime] ОТ [dbo]. [Класификация] AS [Extent1] КЪДЕТО ([Extent1].[ Име] IN (N'Android', N'Solaris')) И ([Extent1].[ Име] НЕ Е NULL)
Ако искате да избегнете генерирането на EF от тези допълнителни NULL условия, можете да се обърнете към следното.
Конфигуриране на свойството DbContextConfiguration.UseDatabaseNullSemantics
Получава или задава стойност, която показва дали да се показва нулева семантика на базата данни при сравняване на два операнда и те вероятно ще са нулеви. По подразбиране стойността е false.
Кодът е следният:
Например: Ако UseDatabaseNullSemantics е вярна, тогава (operand1 == операнд2) ще бъде преобразуван в (operand1 = operand2); Ако UseDatabaseNullSemantics е невярна, тя ще бъде преобразувана в (((operand1 = operand2) И (NOT (operand1 Е NULL ИЛИ operand2 Is null))) или ((operand1 Е NULL) И (operand2 Е NULL))).
Документация (Има грешка в описанието на документацията):Входът към хиперлинк е видим.
поле за добавяне на атрибута [Задължително]
След като EF добави атрибута [Required] към свойството на обекта, той всъщност не позволява атрибутът (полето) да бъде NULL в базата данни.След изпълнение на командата за миграция, полето не може да бъде NULLТъй като полето не може да бъде NULL в базата данни, EF естествено не генерира някои NULL проверки в SQL операторите, генерирани за това поле.
Препратка:Входът към хиперлинк е видим.
|