gpt4 book ai didi

c# - SQLite 级联删除

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:35 25 4
gpt4 key购买 nike

实际上,我正在使用 SQLite 数据库开发 Windows Metro 应用程序。我使用 sqlite 管理器 (mozilla) 进行管理。我试过删除级联,但它只在 sqlite 管理器中有效,在 C# 代码中无效:

我的函数


public async Task<string> DeleteSurvey(int SurveyID)
{
string result = string.Empty;
var db = new SQLite.SQLiteAsyncConnection(App.DBPath);
var survey = await GetSurvey(SurveyID);
var res = await db.DeleteAsync(survey);

if (res > 0)
result = "Success";
else
result = "Echec";

return result;
}

db.CreateTable<Survey>();

SQLiteCommand command1 = new SQLiteCommand(db);
command1.CommandText = "create table if not exists SurveyItemGroup";
command1.CommandText += "(ID integer primary key autoincrement not null, IDSurvey integer,";
command1.CommandText += "Number integer, Name varchar(50), FOREIGN KEY(IDSurvey) REFERENCES Survey(ID) ON DELETE CASCADE ON UPDATE CASCADE)";
command1.ExecuteNonQuery();

在 C# 代码中它只删除调查表而不是两者(调查和调查项目组)

PS:我对 pragma (pragma foreign_keys=ON;) 有同样的问题,它只有在我执行 sqlite 管理器时才有效。

最佳答案

(我添加这个答案是因为 OP 指出这是他的解决方案,但只是在评论中。)

目前,要使 ON DELETE CASCADE 起作用,pragma foreign_keys=on; 必须在每个 新连接中发出。这是not currently一个持久的设置。

关于c# - SQLite 级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com