2012-03-29 4 views
2

Je suis nouveau à l'utilisation de RavenDB et en essayant de faire fonctionner les index dans une application MVC3 simple qui permet aux utilisateurs d'entrer dans des lieux géographiques. J'ai deux modèles, un UserModel et un LocationModel. Le LocationModel stocke le UserId lorsqu'il est enregistré et j'essaye de créer un index sur ceci.RavenDB indexes erreur "Impossible de trouver l'index nommé"

public class Locations_ByUser : AbstractIndexCreationTask<LocationModel> 
    { 
     public Locations_ByUser() 
     { 
      Map = locations => from location in locations 
          select new { location.UserId }; 

     } 
    } 

Je suis inscris l'index avec le code suivant

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

      RegisterGlobalFilters(GlobalFilters.Filters); 
      RegisterRoutes(RouteTable.Routes); 

      //ADD THE MODEL BINDER FOR LIST TO STRING 
      ModelBinders.Binders.Add(typeof(TestAPI.Models.LocationModel), new TestAPI.Classes.LocationModelBinder()); 

      //INIT THE STORE, DO ONCE PER APP START 
      TestAPI.Classes.DataDocumentStore.Initialize(); 

      //SET THE INDEXES 
      IndexCreation.CreateIndexes(typeof(Locations_ByUser).Assembly, TestAPI.Classes.DataDocumentStore.Instance); 
     } 

Cependant, quand je tente d'appeler l'index de l'application mvc

[HttpGet] 
     public ActionResult Index() 
     { 

      var result = this.DocumentSession.Query<LocationModel>("Locations_ByUser").ToList(); 
      foreach (var userid in result) 
      { 
       Console.Out.WriteLine(userid); 
      } 

      return View(); 
     } 

renvoie l'erreur suivante

Impossible de trouver l'index nommé: Locat ions_ByUser

Je me demandais si quelqu'un d'autre a déjà rencontré cela auparavant et pourrait me pointer dans la bonne direction. Merci d'avance.

Répondre

4

L'index dans RavenDB sera en fait nommé: "Locations/ByUser" lorsqu'il est généré.

Si vous ouvrez Raven Studio, vous pouvez le voir sous l'index. Le _ est remplacé par/

Aussi, vous n'avez pas besoin de spécifier la valeur de chaîne, vous pouvez écrire votre requête comme:

var result = this.DocumentSession.Query<LocationModel, Locations_ByUser>().ToList(); 
+0

Vous êtes génial! Vous avez réussi à résoudre deux problèmes pour moi. Je n'arrivais pas à comprendre comment charger le Raven Studio en embarqué et je l'ai retrouvé grâce à ce post (ainsi que de faire fonctionner mon index). J'ai dû manquer la convention de nommage dans la documentation. Savez-vous où je pourrais le trouver? – jamesamuir

+0

Je ne pense pas que la dénomination de l'index est mentionnée dans la documentation, je pense que c'était une modification faite pendant la version 4xx. Pas tout à fait sûr. J'ai jeté un coup d'oeil rapide et n'ai pas pu le trouver. – Phill

Questions connexes