C# 使用linq从sqlite删除Windows 8/RT
我在Windows应用商店应用程序的独立存储中有SQLite数据库。 我在Windows运行时使用SQLite 当我想删除所有表项时,我使用以下方法:C# 使用linq从sqlite删除Windows 8/RT,c#,linq,sqlite,windows-runtime,C#,Linq,Sqlite,Windows Runtime,我在Windows应用商店应用程序的独立存储中有SQLite数据库。 我在Windows运行时使用SQLite 当我想删除所有表项时,我使用以下方法: public static async void DeleteAllProjects() { var storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("myDb.sqlite"); using (var db =
public static async void DeleteAllProjects()
{
var storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("myDb.sqlite");
using (var db = new SQLiteConnection(storageFile.Path))
{
try
{
db.DeleteAll<Projects>();
}
catch
(Exception ex)
{
Debug.WriteLine("Delete error " + ex.Message);
}
}
}
有人能帮我吗?将ID定义为项目的主键。如何做到这一点取决于您使用的ORM。@DanielHilgarth,谢谢您的评论。这个问题很愚蠢,但评论很明显,但很有帮助。
public static async void Delete(List<Projects> projects)
{
var storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("myDb.sqlite");
using (var db = new SQLiteConnection(storageFile.Path))
{
try
{
foreach (var project in projects)
{
var existingProject = (db.Table<Projects>().Where(
p => p.id == project.Id)).FirstOrDefault();
if (existingProject != null)
{
db.Delete<Projects>(existingProject);
}
}
}
catch
(Exception ex)
{
Debug.WriteLine("Delete error " + ex.Message);
}
}
}
ex.Message = "Cannot delete Projects: it has no PK" string