Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建/获取要发送到SQLiteAsyncConnection.DeleteAll()的TableMapping映射_C#_Sqlite_Xamarin - Fatal编程技术网

C# 创建/获取要发送到SQLiteAsyncConnection.DeleteAll()的TableMapping映射

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

我正在尝试删除通过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; } }
您只需要指定使用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>();
}