2015-04-17 54 views
3

比方說,我有這樣的官方樣本中的許多一對多的關係:SQLite-Net擴展:如何擺脫關係記錄?

public class Student 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 

    public string Name { get; set; } 

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

public class Subject 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 

    public string Description { get; set; } 

    [ManyToMany(typeof(StudentSubject))] 
    public List<Subject> Subjects { get; set; } 
} 

public class StudentSubject 
{ 
    [ForeignKey(typeof(Student))] 
    public int StudentId { get; set; } 

    [ForeignKey(typeof(Subject))] 
    public int SubjectId { get; set; } 
} 

如果我現在刪除的學生,由中間對象表示的關係記錄不被刪除了。 (如果我啓用級聯刪除,主題被刪除 - 什麼不應該發生。)

目前我通過刪除記錄與自定義查詢手動清理,但有沒有更好的方式與sqlite網?

回答

2

您可以設置爲null或空列表Subjects屬性並調用UpdateWithChildren關於學生對象。

student.Subjects = null; 
conn.UpdateWithChildren(student); 

它將更新學生對象和它的關係,刪除所有記錄該學生,這相當於:

conn.Execute("DELETE FROM StudentSubject WHERE StudentId = ?", studentId); 

的缺點是,你必須在執行多一個「更新」聲明在數據庫中,如果你讓SQLite-Net Extensions處理關係。