Требования: Когда 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-операторах, сгенерированных для этого поля.
Ссылка:Вход по гиперссылке виден.
|