LiteDB在执行查询时不返回任何数据

本文关键字:返回 任何 数据 执行 查询 LiteDB | 更新日期: 2023-09-27 18:15:14

我试着在任何地方找到答案,但我认为我做错了什么,但不知道是什么。

我有一个叫做Genre的结构体。Genreidname

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

我正确地填充了DB文件,我的.db文件看起来如下(来自一个公共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"}

到目前为止还不错,对吧?现在的问题是,当我试图得到的数据再次使用在其他地方。我有一个方法,它应该返回名称,但它没有。

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

当我放置一个断点时,genre具有id = 0name = null的值。当我做一个像Collection.FindOne(x => x.Name == "Animation")

这样的静态调用时也会发生同样的情况

我错过了什么?

LiteDB在执行查询时不返回任何数据

尝试在public int Id { get; set; }之前添加[BsonId]。此外,我认为有查询问题与结构。您可能需要使用类来代替。