Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3654|Відповідь: 0

[Джерело] Оператори EF SQL автоматично генерують IS NULL або IS NOT NULL

[Копіювати посилання]
Опубліковано 21.06.2023 22:42:18 | | | |
Вимоги: Коли 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-операторах, згенерованих для цього поля.

Посилання:Вхід за гіперпосиланням видно.






Попередній:ASP.NET Основні (двадцять один) параметри конфігурації — це різниця між AddOptions і Configure
Наступний:Ajax-hook для веб-розробки перехоплює всі запити XMLHttpRequest
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com