SORU
1 EKİM 2010, Cuma


seri varlıkları büyük / küçük harf duyarlı karşılaştırma

Bu varlıklar bu Seri içinde büyük / küçük harfe duyarlı bir karşılaştırma değil:

Thingies.First(t => t.Name == "ThingamaBob");

Nasıl varlıklar bu Seri ile karşılaştırma hassas durumda elde edebilir miyim?

CEVAP
1 EKİM 2010, Cuma


O kullanıyor çünküVarlıklar bu SERİsonuçta SQL ifadeleri içine Lambda İfadeler dönüştürmek. Bu büyük / küçük harf duyarlılığı varsayılan olarak, SQL Server insafına kalmış demektir . ben^>Sql_latin1_general_cp1_cı_asHarmanlama ve büyük / küçük harfe duyarlı DEĞİLDİR.

KullanarakObjectQuery.ToTraceStringaslında SQL Server'a gönderilen oluşturulan SQL sorgu görmek gizemi ortaya koymaktadır:

string sqlQuery = ((ObjectQuery)context.Thingies
        .Where(t => t.Name == "ThingamaBob")).ToTraceString();


Bir oluşturduğunuzdaVarlıklar bu SERİsorguVarlıklar bu SERİkaldıraçlar kontrol ETMENİZ sorgu işleme başlamak için çözümleyici ve SERİ bir ifade ağaç dönüştürür. LINQ ifade ağaç o zaman geçirilirObject ServicesKomut bir ağaca ifade ağaca dönüştüren API,. Yerel veritabanı komut metni komut ağacına çeviren mağaza sağlayıcı (örneğin SqlClient), gönderilir. Sorgu veri deposunda yürütülen ve sonuçlarıHayataiçineVarlık NesneleritarafındanNesne Hizmetleri. Hiçbir mantığı dikkate harf duyarlılığı almak arasında girmiştir.Senin yüklem koymak ne olursa olsun, her zaman Sql Server, bu sütun için Harmanlar değiştirmediğiniz sürece, SQL Server ile aynı şekilde tedavi eder.

Sunucu tarafı çözüm:
Bu nedenle, en iyi çözüm Harmanlama değiştirmek olacaktırAdısütundaThingiestablo HARMANLA . ben^>Latin1_General_CS_ASSql Sunucusu üzerinde bu durum duyarlı olan

ALTER TABLE Thingies
ALTER COLUMN Name VARCHAR(25)
COLLATE Latin1_General_CS_AS

Hakkında daha fazla bilgi içinSql Server Harmanlarbir *10 göz*

İstemci tarafı çözüm
İstemci tarafında geçerli tek çözüm kullanmaktırNesneleri bu SERİbir başka karşılaştırma yapmak için çok zarif görünmüyor:

Thingies.Where(t => t.Name == "ThingamaBob")
        .AsEnumerable()
        .First(t => t.Name == "ThingamaBob");

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013