SQLite错误:无法删除WhereListIterator`1:它没有PK

cda*_*lto 3 c# sqlite extension-methods visual-studio-2012

我试图在Visual Studio 2012中使用SQLite/C#从数据库中删除记录.每当我尝试删除记录时,我都会收到以下错误:

SQLite错误:无法删除WhereListIterator`1:它没有PK

我想用两种不同的方法删除记录.可以仅使用EID(主键)进行删除,也可以删除用户提供除EID之外的所有内容的记录.

if (EID_TextBox.Text != String.Empty) {
    if (Roster_Enrollment.Any(x => x.EID.Equals(Int32.Parse(EID_TextBox.Text)))) {
        App.DBConnection.Delete(Roster_Enrollment.Where(x => x.EID.Equals(Int32.Parse(EID_TextBox.Text))));
        Message_TextBlock.Text = "Enrollment deleted.";
    } else
        Message_TextBlock.Text = "Enrollment not found.";
}
else if (Roster_Enrollment.Any(x => x.CourseNo.Equals(CourseNo_TextBox.Text) && x.SectionNo.Equals(SectionNo_TextBox.Text) && x.Tno.Equals(Tno_TextBox.Text)))
    App.DBConnection.Delete(Roster_Enrollment.Where(x => x.CourseNo.Equals(CourseNo_TextBox.Text) && x.SectionNo.Equals(SectionNo_TextBox.Text) && x.Tno.Equals(Tno_TextBox.Text)));
else
    Message_TextBlock.Text = "Enrollment not found.";
Run Code Online (Sandbox Code Playgroud)

Gar*_*ies 6

您的类数据模型是否具有Table属性和PrimaryKey属性?

[Table("StuffDataModel")]
public class StuffDataModel
{
    [PrimaryKey]
    public int Id { get; set; }

    public byte[] Stuff { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,主键需要具有*public setter*.这个细节只花了我一个小时的调试时间. (2认同)