我试图在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.";
答案 0 :(得分:5)
您的班级数据模型是否具有Table
属性和PrimaryKey
属性?
[Table("StuffDataModel")]
public class StuffDataModel
{
[PrimaryKey]
public int Id { get; set; }
public byte[] Stuff { get; set; }
}
答案 1 :(得分:0)
我看到问题出在... Delete方法将对象作为参数,但是您在参数中使用查询。 尝试以下方法: App.dbconnection.Table()。Delete(x => x.EID.Equals(Int32.Parse(EID_TextBox.Text)));