Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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]. [UserStatus] AS [UserStatus],
    [Extent1]. [Id] AS [Id]
    ОТ [dbo]. [EmailInfo] AS [Extent1]
    INNER JOIN [dbo]. [Аккаунт] AS [Extent2] ON ([Extent1].[ Адрес] = [Extent2]. [Электронная почта]) OR (([Extent1].[ Address] IS NULL) и ([Extent2].[ Электронная почта] НУЛЕВАЯ))



Пример 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].[ Name] IN (N'Android', N'Solaris')) И ([Extent1].[ Имя] НЕ ЯВЛЯЕТСЯ NULL)



Если вы хотите избежать создания EF этих дополнительных NULL условий, вы можете обратиться к следующему.

Наладить свойство DbContextConfiguration.UseDatabaseNullSemantics

Получает или устанавливает значение, указывающее, нужно ли отображать нулевой семантику базы данных при сравнении двух операндов, и оба, скорее всего, будут нулевыми. Значение по умолчанию ложно.

Код таков:


Например:
Если UseDatabaseNullSemantics верна, то (operand1 == operand2) будет преобразован в (operand1 = operand2);
Если UseDatabaseNullSemantics ложна, она будет преобразована в (((operand1 = operand2) И (NOT (operand1 NULL ИЛИ операнд2 NULL))) ИЛИ ((операнд1 NULL) И (operand2 NULL))).

Документация (В описании документации есть ошибка):Вход по гиперссылке виден.

поле для добавления атрибута [Required]

После того как EF добавляет атрибут [Required] к свойству объекта, он фактически не позволяет атрибуту (поле) быть NULL в базе данных.После выполнения команды миграции поле не может быть NULLПоскольку поле не разрешено быть NULL в базе данных, EF естественно не генерирует некоторые проверки NULL в SQL-операторах, сгенерированных для этого поля.

Ссылка:Вход по гиперссылке виден.






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

Mail To:help@itsvse.com