Próbuję użyć ToUpperInvariant()
w zapytaniu LINQ z RavenDB. Otrzymuję InvalidOperationException:Niepoprawna operacja RavenDB Linq .ToUpperInvariant()
nie może zrozumieć, w jaki sposób tłumaczyć server.Name.ToUpperInvariant().
Zapytanie znajduje się poniżej. Co musi się wydarzyć, aby móc dopasować tutaj nazwę? Czy jest to możliwe w zapytaniu za pomocą RavenDB?
public ApplicationServer GetByName(string serverName)
{
return QuerySingleResultAndCacheEtag(session => session.Query<ApplicationServer>()
.Where(server => server.Name.ToUpperInvariant() == serverName.ToUpperInvariant()).FirstOrDefault())
as ApplicationServer;
}
protected static EntityBase QuerySingleResultAndCacheEtag(Func<IDocumentSession, EntityBase> func)
{
if (func == null) { throw new ArgumentNullException("func"); }
using (IDocumentSession session = Database.OpenSession())
{
EntityBase entity = func.Invoke(session);
if (entity == null) { return null; }
CacheEtag(entity, session);
return entity;
}
}
OK, fajnie, próbowałem porównać, konwertując na duże litery, a to nie było nawet konieczne. Po prostu wypróbowałem to bez konwersji i działało. Dziękuję Ci! –
Dziękujemy! Próbowałem zrobić to samo; w ogóle o tym nie wiedziałem. Doh. – Darryl
Spodziewał się również zachowania "porównywania języka programowania" i wpadł na ten sam problem. Sądzę, że powinienem był się spodziewać porównania typu "Baza danych jak", które zazwyczaj domyślnie ignoruje przypadek. Dzięki! –