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

  • IGN

    IGN

    19 EYLÜL 2006
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009