2010-07-23 15 views
5

Çalışma zamanında OrderBy özniteliğini belirtmek için uygulamamdaki Dinamik LINQ öğesini Entity'ye kullanmaya çalışıyorum. belgelerin çoğunda açıklandığı gibi kodunu kullanarak Ancak zaman:OrderBy ("it." + Sort) - LINQ ile Entity çerçevesine sabit kodlama?

System.Data.EntitySqlException: 'Ad' geçerli kapsamda veya bağlamda çözülemedi

var query = context.Customer.OrderBy("Name"); 

aşağıdaki özel durum aldı . Başvurulan tüm değişkenlerin kapsam dahilinde olduğundan, gerekli şemaların yüklendiğinden ve ad alanlarının doğru başvurulduğundan emin olun.

http://msdn.microsoft.com/en-us/library/bb358828.aspx

Aşağıdaki kod örneği dahil:

ObjectQuery<Product> productQuery2 = productQuery1.OrderBy("it.ProductID"); 

Bu aşağıdaki için kodumu değiştirmem için beni istenir:

sonra çok araştırıcı bu MSDN sayfa bulundu

var query = context.Customer.OrderBy("it.Name"); 

Bundan sonra kod mükemmel çalışıyor. Herhangi birinin, OrderLy'nin LINQ ile Entity'ye çalışmasının gerçekten doğru bir yol olduğunu doğrulayabilir miyiz? Çerçevenin bu şekilde uygulanacağına inanamıyorum, belki bir şeyi gözden kaçırdım. Bu soruya şimdiye kadar

Benim cevabım

Teşekkürler, Matt

cevap

7

it.Name sözdizimi ESQL'dir ve gerçekten EF'ye özeldir. Bunu bazen kullanmanın iyi nedenleri vardır (ör., Harmanlama belirticileri), ancak normalde yaptığım gibi değil.

var query = context.Customer.OrderBy("Name"); 

: o zaman orijinal sorgu Kod Galerisi'nden indirmek ve eğer

var query = context.Customer.OrderBy(p => p.Name); 

Ayrıca, System.Linq.Dynamic kullanabilirsiniz:

Genellikle standart LINQ ifadeleri kullanın. ..çalışacak.

+0

Teşekkürler, dinamik lib'i deneyeceğim ve çalışıp çalışmadığını göreceğim. 'It' sözdizimini kullanmak tercih edilirse bir örnek verebilir misiniz? Kodunuzu, üzerinde denetiminizin olmadığı bir uygulamayla sıkıca eşleştirdiğiniz görülüyor. Yani değişebilir ve bu nedenle kodunuzu kırabilir? Teşekkürler, Matt – Matt

+0

IMHO, ESQL'i System.Linq.Dynamic üzerinde kullanmanın tek iyi nedeni, ESQL'de, harmanlama gibi, S.L.D.'de bulunmayan birkaç özellikten birini kullanmanız gerekirse. Çoğunlukla S.L.D.'yi tercih ederim. –

1

Hiçbir güzel bir yolu, sıralama kontrol etmek parametresi olan bir saklı yordam yaratmaktı.