Вимоги: Коли EF використовує linq to sql або lambda-вирази для запиту до бази даних, SQL-оператори, згенеровані EF, допоможуть нам додати деякі умови IS NULL або NOT NULL.
Приклад 1:
Він генерує SQL-оператор так:
ВИБЕРІТЬ [Extent2]. [UserStatus] AS [UserStatus], [Extent1]. [Id] AS [Id] ВІД [dbo]. [Електронна поштаІнформація] AS [Extent1] INNER JOIN [dbo]. [Обліковий запис] AS [Extent2] ON ([Extent1].[ Адреса] = [Extent2]. [Електронна пошта]) OR (([Extent1].[ Адреса] Є NULL) та ([Extent2].[ Електронна пошта] Є NULL))
Приклад 2:
Він генерує SQL-оператор так:
ВИБЕРІТЬ [Extent1]. [Id] AS [Id], [Extent1]. [Ім'я] AS [Ім'я], [Extent1]. [ParentId] AS [ParentId], [Extent1]. [Позиція] AS [Позиція], [Extent1]. [_CreateTime] ЯК [_CreateTime], [Extent1]. [_UpdateTime] ЯК [_UpdateTime] ВІД [dbo]. [Класифікація] AS [Extent1] ДЕ ([Extent1].[ Назва] IN (N'Android', N'Solaris')) ТА ([Extent1].[ Назва] НЕ Є NULL)
Якщо ви хочете уникнути створення додаткових NULL умов EF, можете звернутися до наступного.
Налаштуйте властивість DbContextConfiguration.UseDatabaseNullSemantics
Отримує або встановлює значення, яке вказує, чи слід відображати нульову семантику бази даних при порівнянні двох операндів, і обидва, ймовірно, будуть нульовими. Значення за замовчуванням є хибним.
Код виглядає так:
Наприклад: Якщо UseDatabaseNullSemantics істинна, то (operand1 == operand2) буде конвертовано у (operand1 = operand2); Якщо UseDatabaseNullSemantics є хибним, вона буде конвертована у (((операнд1 = операнд2) І (НЕ (операнд1 — нуль, або операнд2 — нуль))) або ((операнд1 — нуль) і (операнд2 — NULL))).
Документація (У описі документації є помилка):Вхід за гіперпосиланням видно.
поле для додавання атрибута [Required]
Після того, як EF додає атрибут [Required] до властивості об'єкта, він фактично не дозволяє атрибуту (полі) бути NULL у базі даних.Після виконання команди міграції поле не може бути NULLОскільки поле не дозволяється бути NULL у базі даних, EF природно не генерує деякі перевірки NULL у SQL-операторах, згенерованих для цього поля.
Посилання:Вхід за гіперпосиланням видно.
|