Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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# 无法更新列表1:它没有主键_C#_Sqlite_Visual Studio 2012_Sqlite Net - Fatal编程技术网

C# 无法更新列表1:它没有主键

C# 无法更新列表1:它没有主键,c#,sqlite,visual-studio-2012,sqlite-net,C#,Sqlite,Visual Studio 2012,Sqlite Net,我试图更新数据库中的一条记录,更改是在我为页面创建的列表上进行的,但是当我试图更新数据库本身时,我得到一个错误 无法更新列表1:它没有主键 应用程序在代码的最后一行中断。我的表有一个主键。在Students中应该是Tno private void ChangeMajor_Button_Click(object sender, RoutedEventArgs e) { var query = Roster_Students.Where(s => s.Tno == Tno_TextBo

我试图更新数据库中的一条记录,更改是在我为页面创建的列表上进行的,但是当我试图更新数据库本身时,我得到一个错误

无法更新列表1:它没有主键

应用程序在代码的最后一行中断。我的表有一个主键。在
Students
中应该是
Tno

private void ChangeMajor_Button_Click(object sender, RoutedEventArgs e)
{
    var query = Roster_Students.Where(s => s.Tno == Tno_TextBox.Text);
    foreach (var student in query)
        student.Major = ChangeMajor_TextBox.Text;

    App.DBConnection.Update(this.Roster_Students);        
}

稍微修改一下代码似乎可以解决这个问题。以下是新代码:

private void ChangeMajor_Button_Click(object sender, RoutedEventArgs e)
{
    var query = Roster_Students.Where(s => s.Tno == Tno_TextBox.Text);
    foreach (var student in query) {
        student.Major = ChangeMajor_TextBox.Text;
        App.DBConnection.Update(student);
    }
}

只需再次检查PK是否到位…您是否有表的DDL?Tno_TextBox.Text返回一个字符串。您是否尝试在Where子句中将其转换为int?@AzharKhorasany Tno实际上是我表中的一个字符串。@JohnLBevan这里是DDL:0 | Tno | varchar(10)| 0 | 11 | Name | varchar(50)| 0 | 02 | Major | varchar 10 | 0 |0