データベース内の「プロジェクト」レコードと、それに関連付けられているすべての「オプション項目」を削除する方法があります。
public bool DeleteProjectById(int id)
{
using (DbContext db = new DbContext(ConfigHelper.Instance().ConnectionString))
{
try
{
foreach (var entity in db.ProjectOptionItems.Where(o => o.ProjectId == id))
db.ProjectOptionItems.DeleteObject(entity);
db.SaveChanges();
var project = db.Projects.SingleOrDefault(o => o.Id == id);
db.Projects.DeleteObject(project);
db.SaveChanges();
return true;
}
catch (Exception e)
{
ErrorLoggingService.Log(this, e);
return false;
}
}
}
これは正常に機能します。しかし、db.SaveChangesへの最初の呼び出しをコメントアウトすると、コードがどうなるかを期待していましたが、これによりSQL例外が発生します(DELETEステートメントがREFERENCE制約と競合しました)。
SaveChanges()を2回呼び出すことは機能しますが、これは確かにそれを行う方法ではありません。助けてください。ありがとう!