2016-10-27 4 views
-1

Ich habe versucht, überall eine Antwort zu finden, aber ich nehme an, dass ich etwas falsch mache, aber nicht herausfinden kann, was.LiteDB gibt keine Daten zurück, wenn Abfragen ausgeführt werden

Ich habe eine Struktur namens Genre. Genre hat eine id und eine name.

public struct Genre 
{ 
     public int Id { get; set; } 
     public string Name { get; set; } 
} 

ich bevölkern die DB-Datei richtig und meine Db-Datei sieht wie folgt aus (stammt aus einer öffentlichen API):

> db.MoviesGenres.find 
[1]: {"_id":12,"Name":"Adventure"} 
[2]: {"_id":14,"Name":"Fantasy"} 
[3]: {"_id":16,"Name":"Animation"} 
[4]: {"_id":18,"Name":"Drama"} 
[5]: {"_id":27,"Name":"Horror"} 
[6]: {"_id":28,"Name":"Action"} 
[7]: {"_id":35,"Name":"Comedy"} 
[8]: {"_id":36,"Name":"History"} 
[9]: {"_id":37,"Name":"Western"} 
[10]: {"_id":53,"Name":"Thriller"} 
[11]: {"_id":80,"Name":"Crime"} 
[12]: {"_id":99,"Name":"Documentary"} 
[13]: {"_id":878,"Name":"Science Fiction"} 
[14]: {"_id":9648,"Name":"Mystery"} 
[15]: {"_id":10402,"Name":"Music"} 
[16]: {"_id":10749,"Name":"Romance"} 
[17]: {"_id":10751,"Name":"Family"} 
[18]: {"_id":10752,"Name":"War"} 
[19]: {"_id":10770,"Name":"TV Movie"} 

So weit so gut, nicht wahr? Jetzt ist das Problem, wenn ich versuche, diese Daten wieder zu verwenden, um woanders zu verwenden. Ich habe eine Methode, die den Namen zurückgeben sollte, aber es nicht.

public static string GetGenre(int Id) 
     { 
      LitePlatform.Initialize(new LitePlatformFullDotNet()); 

      using (var Db = new LiteDatabase(Database.DataFile)) 
      { 
       var Collection = Db.GetCollection<Genre>("MoviesGenres"); 

       Genre genre = Collection.FindOne(x => x.Id == Id); 

       return genre.Name; 
      } 
     } 

Wenn ich einen Haltepunkt setzen, genre die Werte id = 0 und name = null. Dasselbe passiert, wenn ich einen statischen Anruf wie

Was vermisse ich?

Antwort

0

Versuchen Sie, [BsonId] vor public int Id { get; set; } hinzuzufügen. Außerdem dachte ich, es gab Abfrageprobleme mit Strukturen. Vielleicht möchten Sie stattdessen eine Klasse verwenden.

Verwandte Themen