Получить присвоенное значение автоинкремента после вставки в LiteDb

Рейтинг: 2Ответов: 1Опубликовано: 30.06.2023

Возможно ли при выполнение insert'a получить индекс который был выдан записи. Реализация insert'a через модель:

class Test
{
  public int Id { get; set; }
  public string str1 { get; set; }
  public string str2 { get; set; }

  public void insert()
  {
      using (var db = new LiteDatabase(@"LocalBD.db"))
      {
          var col = db.GetCollection<Test>("Test");
          col.Insert(new Test { str1 = this.str1, str2 = this.str });
      }
  }
}

Ответы

▲ 1Принят

Судя по исходникам, собственно Insert возвращает BsonValue, которое и есть автосгенерированное id. Остаётся привести его к числовому типу.

int id = col
    .Insert(new Test { str1 = this.str1, str2 = this.str })
    .AsInt;

Это если вы не меняли стандартных настроек, при которых функция LiteDb, именуемая AutoId, генерирует автоинкрементные значения для документов, в которых отсутствует поле Id. Настройки позволяют использовать как id GUID-ы или даты.