SQL'e çevirecek olan Linq sorgularında kullanılabilecek bir işlev oluşturmanın bir yolunu arıyorum. Linq-to-SQL kullandığımızda, benzer bir question. Cevap, db'deki bir UDF'ye eşlenmekti. Model tanımının temizliği nedeniyle kod ilk modelini kullanıyoruz, ancak maalesef define functions'a giden bir yol yok, fonksiyonlara eşleme ve söyleyebileceğim kadarıyla kaydedilmiş pro-süreçleri eşleştir (sanırım buradaki ilk fikir) db'yi oluşturmalı ve ona bir şeyler eklememeliyim). Zaman içinde gelişebilecek verimsizlikler ile başa çıkmak için kolay bir yönteme izin vermediğinden, bana göre çok ölçekli görünmüyor, fakat ne burada ne de orada ne var ki ...EF Kodu: SQL'e çevirebilen yöntemler
Her neyse, buradaki ifadeleri tanımlayabileceğimi biliyorum. Öyle gibi benim sorgularında kullanabileceğiniz SQL çevirecek:
public static Expression<Func<MyEntity, bool>> FilterMe(int comparisonNumber)
{
return x => x.SomeProperty == comparisonNumber;
}
var query = MyEntities.Where(FilterMe(1));
bool
dönmek İfadeler için bu sadece mümkün mü? Ben çizgisinde bir şey arıyorum:
var query = from m in MyEntities
let endDate = GetEndDate(m.Start, m.Duration)
where endDate <= DateTime.Now
select m;
bir ifade fonksiyonunda GetEndDate
oluşturmak için birkaç yolu var mı? GetEndDate
içindeki kod, sorguda uzun süre yazdığımda SQL'e iyi gelir, ancak oldukça uzun ve okunacak kadar kafa karıştırıcı.
Düzenleme - Birisi "DateAdd için SQLFunctions kullan" ile yanıt vermeden önce, benim örneğim bu bir örnektir. Bunu kullanmak istediğim sayısız başka yol var. Şimdiden teşekkürler.
Bunu denediniz mi? Yani, bir 'İfade>' döndürün ve 'GetEndDate (m) <= DateTime.Now' sorgusunu yapın. –
mellamokb
Evet, ve bu işe yaramaz. "İfade>' ve "DateTime" ile karşılaştıramazsınız. –
Ocelot20
Cevabımı denediniz mi? – Guillaume86