Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 3654|Отговор: 0

[Източник] EF SQL операторите автоматично генерират IS NULL или IS NOT NULL

[Копирай линк]
Публикувано в 21.06.2023 г. 22:42:18 ч. | | | |
Изисквания: Когато 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 операторите, генерирани за това поле.

Препратка:Входът към хиперлинк е видим.






Предишен:ASP.NET Основните (двадесет и една) конфигурационни опции са разликата между AddOptions и Configure
Следващ:ajax-hook за уеб разработка прихваща всички XMLHttpRequest заявки
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com