Ron*_*ald 1 asp.net asp.net-mvc 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,如果我注释掉第一个电话db.SaveChanges,这是我是如何希望的代码将是这样,这将导致一个SQL异常(DELETE语句冲突与参考约束).
两次调用SaveChanges()可以正常工作,但肯定不是这样做的.请帮忙.谢谢!
就像AliRiza所说,将它设置在你的SQL服务器中.另外在你的DbContext课堂上使用它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ProjectOptionItems>().WillCascadeOnDelete();
}
Run Code Online (Sandbox Code Playgroud)