Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ActionResult删除时从objA中删除包含的OBJB?_C#_Asp.net Mvc 3_Entity Framework 4.1 - Fatal编程技术网

C# 如何在ActionResult删除时从objA中删除包含的OBJB?

C# 如何在ActionResult删除时从objA中删除包含的OBJB?,c#,asp.net-mvc-3,entity-framework-4.1,C#,Asp.net Mvc 3,Entity Framework 4.1,试图在删除操作中从obj A中删除B的ICollection,但出现以下错误: “ErrorDelete语句与引用约束冲突” 有道理,但我只是不知道如何先删除包含的B的ICollection,或者认为它们会自动删除: public ActionResult DeleteConfirmed(int id) { A objA = db.As.Find(id); // **NOTE:** objA has a ICollection

试图在删除操作中从obj A中删除B的ICollection,但出现以下错误:

“ErrorDelete语句与引用约束冲突”

有道理,但我只是不知道如何先删除包含的B的ICollection,或者认为它们会自动删除:

 public ActionResult DeleteConfirmed(int id)
    {            
        A objA = db.As.Find(id);
        //  **NOTE:**  objA has a ICollection of objB's here that I tried to iterate and
        //             delete them here using: foreach (var i in A.Bs) {db.Bs.Remove(i);} : didn't work
        db.As.Remove(objA);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

在数据库中,需要编辑外键约束并指定“删除级联”选项,以便在删除该对象时,也会删除其所有引用


有关详细信息,请参阅。

我同意Hasan的观点-只是提供了实体框架的更多特定信息,因为这就是它被标记的地方

public ActionResult DeleteConfirmed(int id) 
{             
    A objA = db.As.Find(id); 
    objA.Bs.Clear();
    db.As.Remove(objA); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
} 
请注意此处的实体框架特定行为:

如果向模型中添加级联删除规则,则数据库中必须有相应的删除规则。 如果您出于某种原因坚持要违反规则(1),则只有在内存中加载了所有依赖项时,级联才会起作用。 (2) 是*不*推荐的!!! 也

太棒了!非常感谢你,哈桑! If you add an Cascade delete rule to the model, you MUST have a corresponding DELETE rule in the database. If you absolutely insist on breaking rule (1) for some reason, Cascade will only work if you have all the dependents loaded in memory. (2) is *not* recommended!!!