Nasıl varlık çerçevesi içinde null değerler için sorgu miyim?
Böyle bir sorgu çalıştırmak istiyorum
var result = from entry in table
where entry.something == null
select entry;
ve bir IS NULL
oluşturulan.
Düzenlenmiştir: İlk iki cevaptan sonra Varlık Çerçevesi kullandığımı açıklamak ihtiyacı hissediyorum ve SQL için Seri değil. Nesne.() Eşittir yöntem EF çalışmak için görünmüyor.
Hayır düzenleyin.2:
Yukarıdaki sorgu, beklendiği gibi çalışır. Doğru IS NULL
oluşturur. Üretim kodumu ancak
value = null;
var result = from entry in table
where entry.something == value
select entry;
ve oluşturulan SQL something = @p; @p = NULL
oldu. EF doğru sabit ifade çevirir gibi görünüyor ama eğer bir değişken söz konusu ise normal bir karşılaştırma gibi davranır. Mantıklı aslında yapar. Bu soruyu kapatırım
CEVAP
Lınq-to-SQL: için geçici çözüm
var result = from entry in table
where entry.something.Equals(value)
select entry;
Seri-Varlıklar için geçici çözüm (ah!):
var result = from entry in table
where (value == null ? entry.something == null : entry.something == value)
select entry;
Bu bana birkaç kez ısırdı ki kötü bir hata değildir.
Düzenleme:This bug is being fixed in EF 4.5! Bu hata upvoting için herkese teşekkürler!
Geriye uyumluluk için, opt-in - bir ayarı entry == value
çalışması için etkinleştirmeniz gerekir el ile olacaktır. Ne bu ayar haber yok henüz. Bizi izlemeye devam edin!
Edit 2:EF ekibi tarafından this post görebu sorunu EF6 sabit olmuştur! Woohoo!
EF6 varsayılan davranışını üç-değerli mantık telafi etmek için değiştirdik.
Bu eski davranış dayalı varolan kodu anlamına gelir(Değişken karşılaştırarak teknull != null
ama)ya bu davranışı kullanan veya UseCSharpNullComparisonBehavior
false eski kırık davranışı kullanmak için değiştirilmesi gerekir.
Nasıl Varlık Çerçevesi içinde yabancı ...
Nasıl bir proje içinde tek bir dosya i...
Nasıl grep bir klasör içinde bir kelim...
Nasıl Varlık çerçevesi takılı varlık K...
Nasıl bir PostgreSQL '' sorg...