LiteDB 对不同的条目使用相同的 ID

LiteDB use same ID for different entries

我有一个数据库,我试图在其中添加消息,我使用 channelID 作为 LiteDB id。我想以某种方式在同一频道中 post 多于 1 条消息,但为此我将不得不以某种方式使用相同的 ID。

   private LiteDatabase Database { get; } = new LiteDatabase(@"data/msg.db");

    public ILiteCollection<Message> Messages { get { return Database.GetCollection<Message>("Messages"); } }

    public void Add(int channelid, Message message)
    {
        message.ChannelID = channelid;
        Messages.Insert(message);

        //Books.Add(book.Id,book);
    }

留言class

public class Message
{
    [LiteDB.BsonId]
    public int ChannelID { get; set; }

    public int User { get; set; }

    public DateTime Date { get; set; }

    public string Text { get; set; }
}

这是我要复制的API:http://www.webservies.be/chat/swagger/index.html 在这里,当我想 POST 一条消息时,可以使用相同的 channelID。

如果您希望您的 class 与您发布的 API 匹配,您将需要一个额外的 Channel class 与Message。一个聊天频道可以有很多消息吧?

类似

public class Channel
{
    [BsonId]
    public int ChannelId { get; set; }
    public string Name { get; set; }

    [BsonRef]
    public List<Message> Messages { get; set; }
}

public class Message
{
    [BsonId]
    public int MessageId { get; set; }
    public int ChannelId { get; set; }
    public int UserId { get; set; }
    public DateTime Date { get; set; }
    public string Text { get; set; }
}

插入新消息与您已经完成的操作非常相似。

public void Add(int channelId, string text, int userId)
{
   var message = new Message {
       ChannelId = channelId,
       Text = text,
       UserId = userId,
       Date = DateTime.Now
   };

   Messages.Insert(message);
}