vs ben Onlar SQL LIKE
işlemi gerçekleştirmek için EF.Functions.Like
gibi yeni SQL fonksiyonları eklendi söylüyor taraf çerçeve çekirdeğinin 2,0 https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-entity-framework-core-2-0/Varlık çerçeve EF.Functions.Like string.Contains
duyurusunu okuyordu.
Merak ediyorum, o zaman EF.Functions.Like
ve string.Contains
/StartsWith
arasındaki fark nedir?
var customers = context.Customers.Where(c => c.Name.StartsWith("a")); // Version A
var customers = context.Customers.Where(c => EF.Functions.Like(c.Name, "a%")); // Version B
Ne iki sürüm arasındaki fark olacaktır: Örneğin
? EF, string.Contains
/StartsWith
'un ilgili SQL işlemlerine nasıl dönüştürüleceğini çoktan biliyor, değil mi? i düşünebilirsiniz
tek nedeni (bu bir StartsWith("a") && Contains("b")
olarak yazılabilir rağmen) EF.Functions.Like
bu nedenle mi "a%b%"
gibi daha karmaşık modeller için izin vereceğini mi?
SQL deyimini kontrol edin. Büyük ihtimalle aynıdırlar. '.İşlemlerİşin '%'' '' LIKE'ya çevrilir. * İçerir * diğer tarafa 'LIKE 'a%' a dönüştürülür, bu da çok kötü bir fikir. '' LIKE 'a%' 'indekslerden faydalanabilir, çünkü esas olarak bir aralık araştırmasıdır. 'LIKE'% a% '', eğer desen –
modelinin eşleşip eşleşmediğini bulmak için tüm satırları işlemek zorundadır Evet, –
Evet, neden şüpheleniyordum, bunun için bir uzantı yöntemi sağladılarsa çok daha iyi olurdu o, c.Name.Like (...) – areller