创建/获取TableMapping Map以发送到SQLiteAsyncConnection.DeleteAll()

时间:2018-01-04 22:02:24

标签: c# sqlite xamarin

我试图删除通过nuget包sqlite-net-pcl(1.5.166-beta)为Xamarin.forms访问的sqlite数据库表中的所有项目。

方法DeleteAllAsync,根据Visual Studio的代码完成菜单, 采用'TableMapping Map'你可以帮助我找出这种情况下的'TableMapping Map'是什么吗?

我在哪里可以找到sqlite-net-pcl nuget包的文档?在nuget上没有列出项目页面。

下面的代码段给出了上下文和DeleteAllAsync的错误调用

public class ItemDb
{
    readonly SQLiteAsyncConnection database;

    public ItemDb(string dbPath)
    {
        database = new SQLiteAsyncConnection(dbPath);
        database.CreateTableAsync<Item>().Wait();
    } 
    internal void DeleteAll()
    {
        database.DeleteAllAsync(database.Table<Item>);
    }
}

1 个答案:

答案 0 :(得分:2)

您只需指定要使用Type的{​​{1}},它就会删除表格中的所有项目。

DeleteAllAsync

internal async Task DeleteAll() { await database.DeleteAllAsync<Item>(); } 是sqlite-net-pcl v1.5中的新增内容,v1.5仍处于预发布状态。官方文档在这里,一旦v1.5升级为稳定版,它可能会更新为包括DeleteAllAsynchttps://github.com/praeclarum/sqlite-net/wiki

更快的方法

删除表中所有项目的更快捷方法是删除表并重新创建它(假设表中有很多项)。

DeleteAllAsync

完成示例

这是一个完整的示例,有助于提高性能并避免多线程问题。

internal async Task DeleteAll()
{
    await database.DropTableAsync<Item>();
    await database.CreateTableAsync<Item>();
}