我们有一个类Salespoint,它包含在RavenDB中的SalespointDocument中 . 当我尝试创建以下索引时:

public class GroupInfoIndex: AbstractIndexCreationTask<SalespointDocument, SalespointGroupTimestampTuple>
{
    public GroupInfoIndex()
    {
       Map = salespoints => from s in salespoints
         select new
          {
           SalespointId = s.Salespoint.SalespointSimplePropertiesData.SalespointId,
           DistributorId = s.Salespoint.SalespointSimplePropertiesData.DistributorId,
           AgentId = s.Salespoint.SalespointSimplePropertiesData.AgentId,
           Timestamp = s.TimeStamp
          };
    }
}

并像这样查询它:

myDocumentSession.Query<SalespointGroupTimestampTuple>("GroupInfoIndex").ToList()

我从来没有得到任何数据 .

当我查看RavenDB silverlight客户端时,我发现查询是这样保存的:

docs.SalespointDocuments .Select(s => new {SalespointId = s.Salespoint.SalespointSimplePropertiesData.SalespointId,DistributorId = s.Salespoint.SalespointSimplePropertiesData.DistributorId,AgentId = s.Salespoint.SalespointSimplePropertiesData.AgentId,Timestamp = s.TimeStamp})

但是当我尝试在RavenDB silverlight客户端中执行查询时,我收到以下错误:


Lucene.Net.QueryParsers.ParseException:无法解析'docs.SalespointDocuments .Select(s => new {SalespointId = s.Salespoint.SalespointSimplePropertiesData.SalespointId,DistributorId = s.Salespoint.SalespointSimplePropertiesData.DistributorId,AgentId = s.Salespoint.SalespointSimplePropertiesData . AgentId,Timestamp = s.TimeStamp})':遇到“”s.Salespoint.SalespointSimplePropertiesData.SalespointId,“”在第1行第60列 . 期待:“}”...... ---> Lucene.Net.QueryParsers . ParseException:遇到“”s.Salespoint.SalespointSimplePropertiesData.SalespointId,“”在第1行第60列 . 期待:“}”......

位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs中的Lucene.Net.QueryParsers.QueryParser.Jj_consume_token(Int32种类):Lucene.Net.QueryParsers.QueryParser.Term(字符串字段)中的第2130行在z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1884行,位于z:\ Libs \ lucene.net \ src \ core \中的Lucene.Net.QueryParsers.QueryParser.Clause(字符串字段) QueryParser \ QueryParser.cs:第1588行,位于Lucene.Net.Query.C.中的Lucene.Net.QueryParsers.QueryParser.Query(String字段),位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1524行,位于Lucene.Net.QueryParsers .QueryParser.Clause(字符串字段)位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1593行,位于z:\ Libs \中的Lucene.Net.QueryParsers.QueryParser.Query(字符串字段) lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1524行,位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs中的Lucene.Net.QueryParsers.QueryParser.Parse(字符串查询):第232行---内部异常堆栈跟踪结束---在Lucene.Net.QueryParsers.QueryParser.Parse(String query)在z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:位于c:\ Builds \ raven \ Raven.Database中的Raven.Database.Indexing.QueryBuilder.BuildQuery(字符串查询,PerFieldAnalyzerWrapper分析器)中的第250行\ Indexing \ QueryBuilder.cs:位于Raven.Database.Indexing的第70行:Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery()位于Ra:.Database.Indexing的c:\ Builds \ raven \ Raven.Database \ Indexing \ Index.cs:第723行 . 在System.Collections.Generic中的System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext()中的C:\ Builds \ raven \ Raven.Database \ Indexing \ Index.cs中的Index.IndexQueryOperation.d_24.MoveNext():第581行 . 列表 1.InsertRange(Int32 index, IEnumerable 1集合)位于Raven.Database.DocumentDatabase . <> c_DisplayClass72.b__6a(IStorageActionsAccessor actions)位于c:\ Builds \ raven \ Raven.Database \ DocumentDatabase.cs:第762行,位于Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(动作 1 action) in c:\Builds\raven\Raven.Storage.Esent\TransactionalStorage.cs:line 379 at Raven.Storage.Esent.TransactionalStorage.Batch(Action 1动作)在c:\ Builds \ raven \ Raven.Storage.Esent \ TransactionalStorage.cs:第340行Raven.Database.DocumentDatabase.Query(String index,I ndexQuery查询)在c:\ Builds \ raven \ Raven.Database \ DocumentDatabase.cs:第707行的Raven.Database.Server.Responders.Index.PerformQueryAgainstExistingIndex(IHttpContext context,String index,IndexQuery indexQuery,Guid&indexEtag)中的c:\构建\ raven \ Raven.Database \ Server \ Responders \ Index.cs:第178行,位于c:\ Builds \ raven \ Raven中的Raven.Database.Server.Responders.Index.ExecuteQuery(IHttpContext context,String index,Guid&indexEtag) . Database \ Server \ Responders \ Index.cs:位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs中的Raven.Database.Server.Responders.Index.GetIndexQueryRessult(IHttpContext context,String index)的第164行:第63行,位于Raven.Database.Server.Responders.Index.OnGet(IHttpContext context,String index),位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs:第94行,位于Raven.Database.Server .Responders.Index.Respond(IHttpContext context)位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs:第46行,位于Raven.Database.Server.HttpServer.DispatchRequest(IHttpC) c:\ Builds \ raven \ Raven.Database \ Server \ HttpServer.cs中的ontext ctx):位于c:\ Builds \ raven \ Raven.Database \ Server中Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx)的第477行\ HttpServer.cs:第259行

System.Net.WebException:Lucene.Net.QueryParsers.ParseException:无法解析'docs.SalespointDocuments .Select(s => new {SalespointId = s.Salespoint.SalespointSimplePropertiesData.SalespointId,DistributorId = s.Salespoint.SalespointSimplePropertiesData.DistributorId,AgentId = s.Salespoint.SalespointSimplePropertiesData.AgentId,Timestamp = s.TimeStamp})':遇到“”s.Salespoint.SalespointSimplePropertiesData.SalespointId,“”在第1行,第60列 . 期待:“}”...... ---> Lucene.Net.QueryParsers.ParseException:遇到“”s.Salespoint.SalespointSimplePropertiesData.SalespointId,“”第1行第60列 . 期待:“}” ...

位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs中的Lucene.Net.QueryParsers.QueryParser.Jj_consume_token(Int32种类):Lucene.Net.QueryParsers.QueryParser.Term(字符串字段)中的第2130行在z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1884行,位于z:\ Libs \ lucene.net \ src \ core \中的Lucene.Net.QueryParsers.QueryParser.Clause(字符串字段) QueryParser \ QueryParser.cs:第1588行,位于Lucene.Net.Query.C.中的Lucene.Net.QueryParsers.QueryParser.Query(String字段),位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1524行,位于Lucene.Net.QueryParsers .QueryParser.Clause(字符串字段)位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1593行,位于z:\ Libs \中的Lucene.Net.QueryParsers.QueryParser.Query(字符串字段) lucene.net \ src \ core \ QueryParser \ QueryParser.cs:第1524行,位于z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs中的Lucene.Net.QueryParsers.QueryParser.Parse(字符串查询):第232行---内部异常堆栈跟踪结束---在Lucene.Net.QueryParsers.QueryParser.Parse(String query)在z:\ Libs \ lucene.net \ src \ core \ QueryParser \ QueryParser.cs:位于c:\ Builds \ raven \ Raven.Database中的Raven.Database.Indexing.QueryBuilder.BuildQuery(字符串查询,PerFieldAnalyzerWrapper分析器)中的第250行\ Indexing \ QueryBuilder.cs:位于Raven.Database.Indexing的第70行:Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery()位于Ra:.Database.Indexing的c:\ Builds \ raven \ Raven.Database \ Indexing \ Index.cs:第723行 . 在System.Collections.Generic中的System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext()中的C:\ Builds \ raven \ Raven.Database \ Indexing \ Index.cs中的Index.IndexQueryOperation.d_24.MoveNext():第581行 . 列表 1.InsertRange(Int32 index, IEnumerable 1集合)位于Raven.Database.DocumentDatabase . <> c_DisplayClass72.b_6a(IStorageActionsAccessor actions)的c:\ Builds \ raven \ Raven.Database \ DocumentDatabase.cs:第762行,位于Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(动作 1 action) in c:\Builds\raven\Raven.Storage.Esent\TransactionalStorage.cs:line 379 at Raven.Storage.Esent.TransactionalStorage.Batch(Action 1动作)在c:\ Builds \ raven \ Raven.Storage.Esent \ TransactionalStorage.cs:第340行Raven.Database.DocumentDatabase.Query(String index,In dexQuery查询)在c:\ Builds \ raven \ Raven.Database \ DocumentDatabase.cs:第707行的Raven.Database.Server.Responders.Index.PerformQueryAgainstExistingIndex(IHttpContext context,String index,IndexQuery indexQuery,Guid&indexEtag)中的c:\构建\ raven \ Raven.Database \ Server \ Responders \ Index.cs:第178行,位于c:\ Builds \ raven \ Raven中的Raven.Database.Server.Responders.Index.ExecuteQuery(IHttpContext context,String index,Guid&indexEtag) . Database \ Server \ Responders \ Index.cs:位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs中的Raven.Database.Server.Responders.Index.GetIndexQueryRessult(IHttpContext context,String index)的第164行:第63行,位于Raven.Database.Server.Responders.Index.OnGet(IHttpContext context,String index),位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs:第94行,位于Raven.Database.Server .Responders.Index.Respond(IHttpContext context)位于c:\ Builds \ raven \ Raven.Database \ Server \ Responders \ Index.cs:第46行,位于Raven.Database.Server.HttpServer.DispatchRequest(IHttpCo) c:\ Builds \ raven \ Raven.Database \ Server \ HttpServer.cs中的ntext ctx:位于c:\ Builds \ raven \ Raven.Database \ Server中Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx)的第477行\ HttpServer.cs:系统Raven.Client.Silverlight.Connection.Async.AsyncServerClient.AttemptToProcessResponse [T](Func 1 process) at Raven.Client.Silverlight.Connection.Async.AsyncServerClient.<>c__DisplayClass2a.<QueryAsync>b__27(Task 1任务)的Raven.Client.Silverlight.Connection.Async.AsyncServerClient.HandleException(WebException e)第259行.Threading.Tasks.Task 1.<>c__DisplayClass1a 1.b_19()at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)at System.Threading.Tasks.Task.InnerInvoke()at System.Threading.Tasks.Task.Execute ()

Inner StackTrace:位于Raven.Studio.Modes.DodementsModel.TimerTickedAsync()的Raven.Studio.Features.Query.ExecuteQueryCommand.GetFetchDocumentsMethod(DocumentsModel documentsModel)中的Raven.Studio.Infrastructure.InvocationExtensions.Catch(任务父,Action`1动作)在Raven.Studio.Inmrastructure.Model.TimerTicked()Raven.Studio.Infrastructure.Model.ForceTimerTicked()at Raven.Studio.Features.Query.ExecuteQueryCommand.Execute(Object _)at Raven.Studio.Models.QueryModel.RestoreHistory Raven.Studio.Infrastructure.ViewModel.LoadModel中的Raven.Studio.Models.QueryModel.LoadModelParameters(String参数)Raven.Studio.Infrastructure.ViewModel.LoadModel(字符串状态)Raven.Studio.Infrastructure中的Raven.Studio.Models.QueryModel.set_IndexName(String value) .ModelAttacher . <> c_DisplayClass1.b_0(Object sender,RoutedEventArgs eventArgs)在MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex,Delegate handlerDelegate,Object sender,Object args)

at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex,String eventName)

问题是什么?