我真的不知道为什么它一直返回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 :(得分:0)
我在这里看不到问题,但我会建议另一条路径,以便跳过所有这些代码,而不是循环遍历订单&amp;详细订单,您只需要删除订单。
除非由于特定的设计决定而无法解决,否则可以通过在数据库中允许 CascadeDelete 来解决此问题。 这样,无论何时删除订单,数据库本身都会为您删除所有子DetailsDrder,您将在此处跳过头痛。启用cascadeDelete的方法如下面的屏幕截图所示:
现在,每当您删除订单时,所有相关的detailesOrders也将被删除,所有这些都由您的数据库处理。