Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 3654|Yanıt: 0

[Kaynak] EF SQL ifadeleri otomatik olarak IS NULL veya IS NOT NULL üretir

[Bağlantıyı kopyala]
Yayınlandı 21.06.2023 22:42:18 | | | |
Gereksinimler: EF veritabanını sorgulamak için linq-sql veya lambda ifadeleri kullandığında, EF tarafından oluşturulan SQL ifadeleri bazı IS NULL veya NOT NULL koşulları eklememize yardımcı olur.

Örnek 1:

Şöyle bir SQL ifadesi oluşturur:

SEÇMEK
    [Kapsam2]. [KullanıcıDurum] AS [UserStatus],
    [Kapsam1]. [Id] AS [Id]
    [dbo]'dan. [E-posta Bilgisi] AS [Kapsam1]
    INNER JOIN [dbo]. [Hesap] AS [Kapsam2] ÜZERINDE ([Kapsam1].[ Adres] = [Kapsam2]. [E-posta]) VEYA (([Kapsam1].[ Adres] GEÇERSIZDIR) ve ([Kapsam2].[ E-posta] GEÇERSIZDIR))



Örnek 2:

Şöyle bir SQL ifadesi oluşturur:

SEÇMEK
    [Kapsam1]. [id] AS [id],
    [Kapsam1]. [İsim] AS [İsim],
    [Kapsam1]. [Ebeveyn Kimliği] AS [ParentId],
    [Kapsam1]. [Pozisyon] AS [Pozisyon],
    [Kapsam1]. [_CreateTime] AS [_CreateTime],
    [Kapsam1]. [_UpdateTime] AS [_UpdateTime]
    [dbo]'dan. [Sınıflandırma] AS [Kapsam1]
    BURADA ([Kapsam1].[ İsim] IN (N'Android', N'Solaris')) VE ([Kapsam1].[ İsim] BOŞ DEĞİL)



EF'nin bu ek NULL koşulları oluşturmasını önlemek istiyorsanız, aşağıdakilere başvurabilirsiniz.

DbContextConfiguration.UseDatabaseNullSemantics özelliğini yapılandırma

İki operandı karşılaştırırken veritabanı null semantiklerinin gösterilip gösterilmediğini gösteren bir değer alır veya ayarlar ve her ikisinin de muhtemelen null olacağı belirtilir. Varsayılan değer yanlıştır.

Kod şöyledir:


Mesela:
Eğer UseDatabaseNullSemantics doğruysa, (operand1 == operand2) (operand1 = operand2) olarak dönüştürülür;
Eğer UseDatabaseNullSemantics yanlışsa, ((operand1 = operand2) VE (NOT (operand1 NULL OR OPERAND2 NULL))) veya ((operand1 NULL) ve (operand2 NULL))) olarak dönüştürülür.

Dokümantasyon (Dokümantasyon açıklamasında bir hata var):Bağlantı girişi görünür.

[Gerekli] özniteliğini eklemek için alan

EF, nesne özelliğine [Gerekli] özniteliğini ekledikten sonra, aslında özniteliğin (alanın) veritabanında NULL olmasına izin vermez.Göç komutu yürütüldükten sonra, alan NULL olarak kabul edilmezAlan veritabanında NULL olmasına izin verilmediğinden, EF doğal olarak o alan için oluşturulan SQL ifadelerinde bazı NULL kontrolleri oluşturmaz.

Referans:Bağlantı girişi görünür.






Önceki:ASP.NET Çekirdek (yirmi bir) yapılandırma seçenekleri AddOptions ile Configure arasındaki farktır
Önümüzdeki:Web geliştirme için ajax-hook, tüm XMLHttpRequest taleplerini kesiyor
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com