2014-01-21 27 views
0

我寫了一個索引創建的代碼,但是當我運行該應用程序並嘗試調用它時,會給出'沒有索引名'的錯誤。我的代碼如下:沒有索引名:TicketsByPaymentTotal

我創建了一個類來創建索引,如:

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

,我在Global.asax文件創建索引,如:

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

如何解決這個問題。

謝謝。

問候,

回答

0

你在系統中創建數據庫索引,即使你使用的是命名實例名爲「餐具」。

  • 如果你要使用指定的數據庫,通過它在DefaultDatabase參數當您創建文檔存儲實例。

  • 打開會話時不要傳遞名稱。當你有多個數據庫需求時,應該保留這個值。

  • 您應該直接將文檔存儲實例傳入CreateIndexes方法,而不是將其從會話中拉出。

  • 請勿打開會話並將其分配給屬性。會話意味着短暫的,並且必須被處置。只有文檔存儲應該長期存在於單個實例上。通常,會話是在using聲明中創建的。在Web應用程序中,應爲每個Web請求創建一個新的會話。

+0

好吧我知道了..感謝您與我分享您的知識..... – Sandy