【发布时间】:2012-08-22 16:00:55
【问题描述】:
当我尝试在我的应用程序中比较 MapReduce 中的日期属性时,我得到一个奇怪的行为。
var queryDate = DateTime.Now.Date;
IQueryable<VisitsByMediaSourceAndVersion.MapReduceResult> queryable =
_documentSession
.Query<MyIndex.MapReduceResult>(MyIndex.INDEX_NAME)
.Where(mapReduceResult => mapReduceResult.Date == queryDate);
var count = queryable.Count(),
当调用 queryable.Count() 时会抛出异常。从异常中查看 url 似乎“日期:2012-08-22T00:00:00.0000000”作为查询参数生成,然后 RavenDB 客户端将“22T00:”解释为索引中的新字段名称。
System.InvalidOperationException 未被用户代码处理 Message=Url: "/indexes/VisitsByMediaSourceAndVersion?query=Date%253A2012-08->22T00%253A00%253A00.0000000&start=0&pageSize=0&aggregation=None"
这是为什么?有解决办法吗?只有我有这个问题吗?
我无法在 RavenDB 的 EmbeddableDocumentStore 版本中重现此问题,这有意义吗?如果我删除它返回结果的日期查询,那么索引本身就可以工作。
使用 RavenDB 客户端 1.2.0.0 和服务器 960。
感谢所有帮助!
完整的堆栈跟踪:
System.InvalidOperationException 未被用户代码处理 Message=Url: "/indexes/VisitsByMediaSourceAndVersion?query=Date%253A2012-08-22T00%253A00%253A00.0000000&start=0&pageSize=0&aggregation=None"
System.ArgumentException:字段“22T00”未编入索引,无法查询未编入索引的字段
在 c:\Builds\RavenDB-Stable\Raven.Database\Indexing\Index.cs: 819 行中的 Raven.Database.Indexing.Index.IndexQueryOperation.AssertQueryDoesNotContainFieldsThatAreNotIndexes()
在 c:\Builds\RavenDB-Stable\Raven.Database\Indexing\Index.cs:line 635 中的 Raven.Database.Indexing.Index.IndexQueryOperation.d_2e.MoveNext()
在 System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
在 System.Collections.Generic.List1.InsertRange(Int32 index, IEnumerable1 集合)
在 Raven.Database.DocumentDatabase.c_DisplayClass82.b__78(IStorageActionsAccessor 操作) 在 c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 838
在 c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 337 中的 Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action1 action) in c:\Builds\RavenDB-Stable\Raven.Storage.Esent\TransactionalStorage.cs:line 376
at Raven.Storage.Esent.TransactionalStorage.Batch(Action1 action)
在 c:\Builds\RavenDB-Stable\Raven.Database\DocumentDatabase.cs:line 781 中的 Raven.Database.DocumentDatabase.Query(String index, IndexQuery 查询)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\Index.cs:line 214 中的 Raven.Database.Server.Responders.Index.PerformQueryAgainstExistingIndex(IHttpContext context, String index, IndexQuery indexQuery, Guid& indexEtag)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\Index.cs: 179 中的 Raven.Database.Server.Responders.Index.ExecuteQuery(IHttpContext 上下文,字符串索引,Guid& indexEtag)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\Index.cs: 119 中的 Raven.Database.Server.Responders.Index.GetIndexQueryResult(IHttpContext 上下文,字符串索引)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\Index.cs:line 91 中的 Raven.Database.Server.Responders.Index.OnGet(IHttpContext context, String index)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\Responders\Index.cs:line 46 中的 Raven.Database.Server.Responders.Index.Respond(IHttpContext context)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 550 中的 Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx)
在 c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 316 中的 Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx) 处
Source=Raven.Client.Lightweight
堆栈跟踪:
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 422 中的 Raven.Client.Connection.HttpJsonRequest.HandleErrors(WebException e)
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\ReplicationInformer 中的 Raven.Client.Connection.HttpJsonRequest.ReadJsonInternal(Func1 getResponse) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 292
at Raven.Client.Connection.HttpJsonRequest.ReadResponseJson() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 202
at Raven.Client.Connection.ServerClient.DirectQuery(String index, IndexQuery query, String operationUrl, String[] includes) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\ServerClient.cs:line 745
at Raven.Client.Connection.ServerClient.<>c__DisplayClass43.<Query>b__42(String u) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\ServerClient.cs:line 727
at Raven.Client.Connection.ReplicationInformer.TryOperation[T](Func2 operation, String operationUrl, Boolean AvoidThrowing, T& result) .cs:第 548 行
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client 中的 Raven.Client.Connection.ReplicationInformer.ExecuteWithReplication[T](String method, String primaryUrl, Int32 currentRequest, Int32 currentReadStripingBase, Func2 operation) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\ReplicationInformer.cs:line 520
at Raven.Client.Connection.ServerClient.ExecuteWithReplication[T](String method, Func2 operation) .Lightweight\Connection\ServerClient.cs:第 165 行
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\ServerClient.cs 中的 Raven.Client.Connection.ServerClient.Query(字符串索引,IndexQuery 查询,字符串 [] 包括):第 727 行
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Document\AbstractDocumentQuery.cs:line 444 中的 Raven.Client.Document.AbstractDocumentQuery2.ExecuteActualQuery() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Document\AbstractDocumentQuery.cs:line 462
at Raven.Client.Document.AbstractDocumentQuery2.InitSync()
在 Raven.Client.Document.AbstractDocumentQuery2.get_QueryResult() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Document\AbstractDocumentQuery.cs:line 430
at Raven.Client.Linq.RavenQueryProviderProcessor1.GetQueryResult[TProjection](IDocumentQuery1 finalQuery) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 1456
at Raven.Client.Linq.RavenQueryProviderProcessor1.ExecuteQueryTProjection 在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs :第 1376 行
在 c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Linq\RavenQueryProvider.cs:line 138 中的 Raven.Client.Linq.RavenQueryProviderProcessor1.Execute(Expression expression) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 1359
at Raven.Client.Linq.RavenQueryProvider1.Execute(表达式表达式)
在 Raven.Client.Linq.RavenQueryProvider1.System.Linq.IQueryProvider.Execute[S](Expression expression) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Linq\RavenQueryProvider.cs:line 183
at System.Linq.Queryable.Count[TSource](IQueryable1 来源)
在 TotallyMoney.CreditCards.Admin.Web.Controllers.DailyReportController.Report(ReportPostModel reportPostModel) 在 C:\Development\Git\MediaIngenuity\TotallyMoney.CreditCards\TotallyMoney.CreditCards.Admin.Web\Controllers\DailyReportController.cs:line 33
在 lambda_method(闭包,ControllerBase,对象 [])
在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,Object[] 参数)
在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 控制器上下文,IDictionary2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 参数)
在 System.Web.Mvc.ControllerActionInvoker.c_DisplayClass15.b_12()
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 过滤器,ActionExecutingContext preContext,Func`1 延续)
内部异常:
【问题讨论】:
-
您为客户端使用的是什么版本?您为服务器使用的版本是什么?
-
我升级到 1.2.2068-Unstable (latest NuGet) 出现这个错误,没有变化。
-
知道可能是什么问题吗?
-
尝试使用 1.2 版本的服务器。
标签: datetime indexing mapreduce ravendb