Indexing 没有名为:TicketsByPaymentTotal的索引

Indexing 没有名为:TicketsByPaymentTotal的索引,indexing,ravendb,Indexing,Ravendb,我已经编写了一个创建索引的代码,但是当我运行应用程序并尝试调用它时,会出现一个错误“没有指定索引”。我的代码如下: 我创建了一个用于创建索引的类,如: public class TicketsByPaymentTotal : AbstractIndexCreationTask<Tickets,TicketTotal> { public TicketsByPaymentTotal() { Map = docs =>

我已经编写了一个创建索引的代码,但是当我运行应用程序并尝试调用它时,会出现一个错误“没有指定索引”。我的代码如下:

我创建了一个用于创建索引的类,如:

 public class TicketsByPaymentTotal : AbstractIndexCreationTask<Tickets,TicketTotal>
    {
        public TicketsByPaymentTotal()
        {
            Map = docs => from doc in docs
                          select new
                          {
                              TicketId = doc.TicketData.ID,
                              TicketTotalVal = doc.TicketData.PaymentTotal,
                              TotalVal = doc.TicketData.Total
                          };
            Reduce = results => from result in results
                                group result by result.TicketId
                                    into g
                                    select new
                                    {
                                        TicketId = g.Key,
                                        TicketTotalVal = g.Sum(x => x.TicketTotalVal),
                                        TotalVal = g.Sum(x => x.TotalVal)
                                    };
        }
    } 
如何解决这个问题

谢谢

问候,,
sandy

您正在系统数据库中创建索引,即使您正在使用名为Dinnerware的命名实例

如果要使用命名数据库,请在创建文档存储实例时在DefaultDatabase参数中传递该数据库

打开会话时不要传递名称。当您需要多个数据库时,应该保留该选项

您应该直接将文档存储实例传递到CreateIndexes方法中,而不是将其从会话中拉出

不要打开会话并将其分配给属性。会话的寿命很短,必须进行处置。只有文档存储应该在单个实例上长期存在。通常,会话是在using语句中创建的。在web应用程序中,应为每个web请求创建一个新会话

public class MvcApplication : System.Web.HttpApplication
    {
        public IDocumentSession DocSession;
        //DocumentStore store = new DocumentStore{ConnectionStringName="RavenDB2",DefaultDatabase="Dinerware"};

        protected void Application_Start()
        {
            //AreaRegistration.RegisterAllAreas();


            DataDocumentStore.Initialize();
            DocSession = DataDocumentStore.Instance.OpenSession("Dinerware");
            RegisterRoutes(RouteTable.Routes);
            //store.Initialize();
            HandlerConfig.RegisterHandlers(GlobalConfiguration.Configuration.MessageHandlers);
            IndexCreation.CreateIndexes(typeof(TicketsByPaymentTotal).Assembly,DocSession.Advanced.DocumentStore);
        }

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute("Default",
                "{controller}/{action}/{id}",
                new { controller="Home",action="Index",id=""});
        }
    }