asp.net - 如何在另一个模型的控制器操作中初始化一个模型?
问题描述
我在 Asp.net MVC 中创建了一个网络应用程序,它有一个订单操作。我有这两种型号的订单
public class Order
{
public int Id { get; set; }
public DateTimeOffset OrderTime { get; set; }
[InverseProperty("Order")]
public ICollection<OrderDetail> OrderDetails { get; set; }
}
对于 OrderDetail
public class OrderDetail
{
public int Id { get; set; }
public int OrderId { get; set; }
public ICollection<Order> Order { get; set; }
public int MenuId { get; set; }
public int RestaurantId { get; set; }
public Menu Menu { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}
我为他们创建了表格。我还为 Order 创建了一个控制器。它包含索引和详细信息操作。索引操作显示订单列表,每个订单都有自己的 Detail 链接,其中应包含 Order 和相关 OrderDetail 的信息
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Order order = db.Orders.Find(id);
if (order == null)
{
return HttpNotFound();
}
return View(order);
}
问题是 OrderDetails 为空。你能建议我如何在 Details 操作中初始化 OrderDetail 吗?
解决方案
您必须告诉 EntityFramework 您要包含哪些导航属性。
Order order = db.Orders
.Where( o => o.Id == id )
.Include( o => o.OrderDetails )
.SingleOrDefault();
但是你不能再使用 Find 方法了
推荐阅读
- postgresql - 如何将所有结果行列数据聚合在一列中?
- python - Python pandas - 比较值
- javascript - javascript ajax codeigniter键值的总和字段
- python-3.x - 将一个 int64 拆分为两个 int32,执行数学运算,然后重新加入
- python - 通过子类字段查询 MongoDB
- java - 使用 maven 时在 ubuntu 18.04 上找不到“tools.jar”
- post - CodeIgniter 4数据提交返回页面404
- javascript - CSS不更新反应组件
- xml - 在 xsl fo 中使用 if 查询创建一个循环
- java - 在一次遍历中有效地找到字符串中的第一个重复字符,而无需使用任何额外的数据结构