我正在将一个类的对象列表存储到SQLite表中。该类有30个字符串,我的列表中有大约6000个类的对象。它只有6MB。打破这个列表并存储几乎一分钟。但是我可以将整个列表存储为一个吗?到目前为止,这是我的代码:
List<TheClass> ListOfObjects;
public static void AddAllObjects() {
for (int i = 0; i < ListOfObjects.Count; i++) {
AddObject(ListOfObjects[i]);
}
}
public static void AddObject(Object obj) {
database.SaveItem(obj);
}
public void SaveItem<T>(T item) {
connection.Insert(item);
}
答案 0 :(得分:1)
sqlite-net的对象SQLiteConnection
具有方法InsertAll
。
List<Object> models = new List<Object>();
// ...
// LocalConnection conn = ...;
SQLiteConnection db = conn.GetSQLiteConnection();
db.InsertAll(models,true); // the true means "run in transaction"
https://github.com/oysteinkrog/SQLite.Net-PCL/blob/master/src/SQLite.Net/SQLiteConnection.cs
顺便说一下,它是作为事务中的foreach实现的,所以我想这是唯一的方法,至少使用sqlite-net。