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

Görünüm: 35720|Yanıt: 2

[Kaynak] EF'de Expression<Func<T, bool>> ile Func<T, bool> arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 26.09.2021 09:21:21 | | | |
Func<TObject, bool> delege

Expression<Func<TObject, bool>> ifadelerdir

Expression, derlemeden sonra bir delege olur ve çalıştırılamıyor. Ne gibi?

Expression<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = örneğin. Derle();

Sonra func diyebilirsiniz:

func(5) //-true döner

func(200) //- yanlış döndürür

İfadeler doğrudan çağrılamaz.

Kap:Yanlış sorgu kodu, veritabanında tam bir tablo sorgusuna neden olur

Hata kodu şöyledir:

Func tipindeki bir değişkeni argüman olarak Count yöntemine aktarın,EF, tüm tablodaki tüm verileri sorgular ve bunları bellekten filtreler。 Oluşturulan SQL ifadesi şöyle görünüyor:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Yürütüldü DbCommand (8ms) [Parametreler=[], CommandType='Metin', CommandTimeout='30']
      [c] SEÇ. [id], [c]. [client_type], [c]. [durum], [c]. [kiracı]
      [tablo] AS [c] DENİŞTİRİSİ
Doğru kod şöyledir:

Doğru yazım, veritabanından bir where koşulu ekler ve sonra sayımın değerini doğrudan döndürür。 Oluşturulan SQL ifadesi şöyle görünüyor:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Çalıştırılan DbCommand (4ms) [Parametreler=[], CommandType='Metin', Komut Zamanaşımı='30']
      SEÇ SAYISI(*)
      [tablo] AS [c] DENİŞTİRİSİ
      BURADA [c]. [client_type] = 1


EF Core Series 4, oluşturulan SQL ifadelerine bakıyor
https://www.itsvse.com/thread-9564-1-1.html
ef, oluşturulan SQL ifadelerini gösterir
https://www.itsvse.com/thread-3813-1-1.html

Func delege çağrılarını kullanmak şunlardır:System.Linq.EnumerableAşağıda sayın

Expression<Func<T ile çağrılan ifade, bool>>System.Linq.QueryableAşağıda sayın



(Son)





Önceki:[Uygulama] Java JDK Windows'un yeşil bir kurulumsuz sürümü yapın
Önümüzdeki:Java, Alibaba Cloud SMS SDK üzerinden SMS doğrulama kodları gönderiyor
Yayınlandı 26.09.2021 16:19:52 |
Öğren
Yayınlandı 26.09.2021 17:31:25 |
Evet, tekrar öğrenmek için buradayım...
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