C# 创建/获取要发送到SQLiteAsyncConnection.DeleteAll()的TableMapping映射
我正在尝试删除通过Xamarin.forms的nuget包sqlite-net-pcl1.5.166-beta访问的sqlite数据库表中的所有项 方法DeleteAllAsync,根据Visual Studio的代码完成菜单, 获取“TableMapping Map”在这种情况下,您能帮我找出“TableMapping Map”是什么吗 在哪里可以找到sqlite net pcl nuget包的文档?nuget上没有为其列出任何项目页面 下面的代码段提供了上下文和对DeleteAllAsync的错误调用 公共类ItemDb { 只读SQLiteAsyncConnection数据库; 公共项字符串dbPath { 数据库=新的SQLiteAsyncConnectiondbPath; database.CreateTableAsync.Wait; } 内部无效删除所有 { database.DeleteAllAsyncdatabase.Table; } }C# 创建/获取要发送到SQLiteAsyncConnection.DeleteAll()的TableMapping映射,c#,sqlite,xamarin,C#,Sqlite,Xamarin,我正在尝试删除通过Xamarin.forms的nuget包sqlite-net-pcl1.5.166-beta访问的sqlite数据库表中的所有项 方法DeleteAllAsync,根据Visual Studio的代码完成菜单, 获取“TableMapping Map”在这种情况下,您能帮我找出“TableMapping Map”是什么吗 在哪里可以找到sqlite net pcl nuget包的文档?nuget上没有为其列出任何项目页面 下面的代码段提供了上下文和对DeleteAllAsync
您只需要指定使用DeleteAllAsync的类型,它将从表中删除所有项
internal async Task DeleteAll()
{
await database.DeleteAllAsync<Item>();
}
完整示例
下面是一个完整的示例,有助于提高性能并避免多线程问题
公共类ItemDb
{
只读SQLiteAsyncConnection数据库;
readonly信号量LIM信号量LIM=新信号量LIM1,1;
公共项字符串dbPath
{
数据库=新的SQLiteAsyncConnectiondbPath;
}
内部异步任务DeleteAllItems
{
等待信号量lim.WaitAsync.ConfigureWaitFalse;
等待初始化。配置等待错误;
尝试
{
wait database.DropTableAsync.configureWaitFalse;
await database.CreateTableAsync.ConfigureAwait False;
}
最后
{
信号量限制释放;
}
}
异步任务初始化
{
if!DatabaseConnection.TableMappings.Anyx=>x.MappedType.Name==typeofT.Name
{
等待DatabaseConnection.EnableWriteHeadLoggingAsync.ConfigureWaitFalse;
等待DatabaseConnection.CreateTableAsyncCreateFlags.None,TypeSoft.ConfigureAwaitfalse;
}
}
}
太好了!通过提供一个线程更安全的选项以及简单的答案,您已经做了很多工作。初始化不是线程安全的。应该在等待信号量之后调用它。等待初始化。配置等待错误;应在wait semaphoreSlim.WaitAsync.ConfigureWaitFalse之后;
internal async Task DeleteAll()
{
await database.DropTableAsync<Item>();
await database.CreateTableAsync<Item>();
}