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=""});
}
}