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.
|