我有一種方法可以刪除數據庫中的「項目」記錄以及與其關聯的所有「選項」。在Entity Framework中,如何使用外鍵約束刪除記錄?
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()的作品,但肯定不是這樣做的。請幫忙。謝謝!
,你不需要所有的foreach循環,這是一個可能的解決方案。 – 2013-03-25 08:20:17
您需要先清除子集合 – 2013-03-25 08:20:51
@aliriza,謝謝 – Ronald 2013-03-25 08:28:45