从 LiteDB 获取数据

Veo*_*ani 6 c# litedb

我想知道如何将 console.writeline 数据存储在我的 litedb 数据库文件中。这是我的 POCO 课程

[BsonId]
public int Id { get; set; }
public DateTime Updated { get; set; }
public DateTime Last { get; set; }
public override string ToString()
{
    return string.Format("Id : {0}, Updated : {1}, Last Message : {2}",
        Id,
        Updated,
        Last);
}
Run Code Online (Sandbox Code Playgroud)

我在数据库中插入信息:

using (var db = new LiteDatabase(_dbLocation))
{
    var hist = db.GetCollection<MailBoxInfo>("History");
    var mail = new MailBoxInfo
    {
        Updated = DateTime.Now,
        Last = datemsg
    };
    hist.Insert(mail);
    hist.EnsureIndex("Updated");
}
Run Code Online (Sandbox Code Playgroud)

最后,尝试输出它:

using (var db = new LiteDatabase(_dbLocation))
{
    var hist = db.GetCollection<MailBoxInfo>("History");
    var res = hist.FindById(3);
}
Run Code Online (Sandbox Code Playgroud)

然后我得到异常

“附加信息:无法为类型‘TanganTask.MailBoxInfo’创建实例。检查是否有一个没有参数的公共构造函数”。

我错在哪里以及如何解决这个问题?

mbd*_*vid 4

LiteDB 要求您的实体类必须public带有public constructor with no parameters. 所以,你的班级必须是:

public class MailBoxInfo
{
    [BsonId]
    public int Id { get; set; }
    public DateTime Updated { get; set; }
    public DateTime Last { get; set; }
    public override string ToString()
    {
        return string.Format("Id : {0}, Updated : {1}, Last Message : {2}",
            Id,
            Updated,
            Last);
    }
}
Run Code Online (Sandbox Code Playgroud)

默认类是内部类(只是class MailBoxInfo)。