我正在尝试ToUpperInvariant()在RavenDB的LINQ查询中使用.我收到了一个InvalidOperationException:
无法理解如何翻译server.Name.ToUpperInvariant().
查询如下.为了让我能够在这里按姓名匹配,需要做些什么?这在使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
正如异常所述,服务器无法理解ToUpperInvariant().据我所知,RavenDB使用自定义的LowerCaseKeywordAnalyzer,因此默认情况下查询不区分大小写.有关更多详细信息,请参阅有关分析器的RavenDB文档.