0

我有类似的情况,对于这篇文章,删除有效,但仅适用于学生和班级表,在 student_classes 表中元素不会被删除。

  public class Students
{
    [PrimaryKey, AutoIncrement]
    public int StudentId { get; set; }
    public string Name { get; set; }

    [ManyToMany(typeof(Students_Classes))]
    public List<Classes> Classes { get; set; }
}

public class Classes
{
    [PrimaryKey, AutoIncrement]
    public int ClassId { get; set; }
    public string Name { get; set; }

    [ManyToMany(typeof(Students_Classes))]
    public List<Students> Students { get; set; }
}

public class Students_Classes
{
   [PrimaryKey, AutoIncrement]
    public int StudentClassesId { get; set; }

    [ForeignKey(typeof(Students))]
    public int StudentFId { get; set; }

    [ForeignKey(typeof(Classes))]
    public int ClassFId { get; set; }
}

要删除我使用以下代码

conn.Delete(student, true);

我在插入和更新过程中没有问题谢谢

ps 我的类有不同的名字,不过没关系,代码真的一模一样

4

2 回答 2

1

您的 Students_Classes 类中没有主键。那就是问题所在。

于 2016-02-04T12:44:50.143 回答
0

级联删除不会删除中间记录。这些记录是无害的,但完全没用,您可以手动删除它们。例如:

// Fetch IDs of intermediate records to delete
var deleteIds = conn.Table<Student_Classes>()
    .Where(e => e.StudentFId == student.StudentId)
    .Select(e => e.StudentFId).ToList();

// Perform batch deletion
conn.DeleteAllIds<Student_Classes>(deleteIds);

或者更高性能(但对重构不太友好):

var deleteQuery = "DELETE FROM Student_Classes WHERE StudentFId == ?";
conn.Execute(deleteQuery, student.StudentId);
于 2016-02-05T10:04:53.410 回答