を使用して、学生とクラスの間に多対多の関係がありますSQLite-net Extensions
。
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
{
[ForeignKey(typeof(Students))]
public int StudentFId { get; set; }
[ForeignKey(typeof(Classes))]
public int ClassFId { get; set; }
}
この方法で関係を追加します。
dbConnection.InsertOrReplace(new Students_Classes { StudentFId = sId, ClassFId = cId });
しかし、関係を削除したい場合:
var validRelation = dbConnection.Find<Students_Classes>(x => x.StudentFId = sId && x.ClassFId = cId);
if (validRelation == null)
return;
dbConnection.Delete(validRelation);
というエラーが表示されますcannot delete because it has no PK
。すべてのクラスを含む Student を取得し、1 つのクラスを削除して、そのクラスで再度保存できますが、パフォーマンスの問題が発生する可能性があります。
多対多の関係で関係を削除するには? ありがとう。