2014-12-07 100 views
1

我真的不知道它为什么会一直返回null,即使值存在。我需要你的帮助 我的控制MVC 4即使数据库中存在该值,也返回null

public ActionResult DeleteConfirmed(int id) 
    { 
     User user = db.Users.Find(id); 
     var orders = db.Orders// 1ng co nhieu hoadon 
      .Where(h => h.USERID == id).ToList(); 

     if (orders != null)//each order has detail order, find them and delete 
     { 
      foreach (Order order in orders) 
      { 
       var detailorders = db.DetailOrders 
        .Where(detailorder => detailorder.OrderID == order.OrderID).ToList();// Return Null here 
       foreach (DetailOrder o in detailorders) 
        db.DetailOrders.Remove(o); 

       db.Orders.Remove(order); 
      } 
     } 



     db.Users.Remove(user); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

我不知道为什么detailorders返回null,帮助我。 我的模型:

public Order() 
    { 
     this.DetailOrders = new HashSet<DetailOrder>(); 
    } 

    public int OrderID { get; set; } 
    public Nullable<int> USERID { get; set; } 


    public virtual ICollection<DetailOrder> DetailOrders { get; set; } 
    public virtual User User { get; set; } 

和我DetailOrder模型。我使用EntiyFramework 5.0.0.0

public partial class DetailOrder 
{ 


    public int OrderID { get; set; } //Primary Key 
    public int ProductID { get; set; }// Primary Key 


    public virtual Order Order { get; set; } 
    public virtual Product Product{ get; set; } 

} 
+0

什么返回null? – 2014-12-07 07:16:09

+0

你的问题不清楚。哪个方法返回null,表的结构和它的内容是什么......你尝试选择所有没有在哪里? – Dani 2014-12-07 07:16:23

+0

我真的需要帮助。 – 2014-12-07 07:40:01

回答

0

我不能在这里看到这个问题,但我会建议另一条路径,以跳过所有此代码,而不是遍历订单&详情订单,你将需要删除刚命令。

除非你不能因具体的设计决定,否则这里的问题可以通过在数据库中允许CascadeDelete来解决。 这样,无论您何时删除订单,数据库本身都会负责为您删除所有子级的DetailsOrder,并且您将在此跳过头痛的问题。

  1. 打开DetailsOrder在“设计”模式
  2. 打开“关系”
  3. 展开选项“插入和更新规范”:

    使cascadeDelete的方式在下面的屏幕截图中示出

  4. 选择“级联”的选项“删除规则”
  5. 点击“确定”,然后保存表

enter image description here 现在每当您删除订单时,所有相关的detailesOrders也会被删除,所有相关的detailesOrders都会被您的数据库处理。

+2

它完美的作品非常感谢你,你是一个救星。我真的很感谢你的帮助! – 2014-12-07 11:59:01

+0

欢迎您:) – 2014-12-07 12:21:07

相关问题