Получить присвоенное значение автоинкремента после вставки в LiteDb
Возможно ли при выполнение 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 шт):
Автор решения: 4per
→ Ссылка
Судя по исходникам, собственно Insert возвращает BsonValue, которое и есть автосгенерированное id. Остаётся привести его к числовому типу.
int id = col
.Insert(new Test { str1 = this.str1, str2 = this.str })
.AsInt;
Это если вы не меняли стандартных настроек, при которых функция LiteDb, именуемая AutoId, генерирует автоинкрементные значения для документов, в которых отсутствует поле Id. Настройки позволяют использовать как id GUID-ы или даты.