1

我的代码第一类中有 1:m 关系。我的视图的订单实例显示具有唯一 OrderID 的值。由于一个客户可以有多个订单,因此外键 CustID 在此视图中不是唯一的。

public class Customers
{

    public int CustomerID { get; set; }


    [StringLength(50, ErrorMessage = "{0} cannot exceed {1} characters")]
    public string LastName { get; set; }
    public string Initials { get; set; }

    public string email {get; set;}
   public List<Orders> orders { get; set; }
}

订单类:

public class Orders
{

        [Key]
        public int OrdersID { get; set; }
        public int OrderName { get; set; }
        public int? CustomerID { get; set; }
        public virtual Customers customer { get; set; }

}

下面是我的控制器:

 private custContext db = new custContext();

    //
    // GET: /cust/

    public ViewResult Index()
    {
        var cust = db.orders.Include(c => c.customer).Take(10);
        return View(cust.ToList());
    }

如何在我的视图中仅显示不同的客户,而他们的OrderNames在同一视图中?

4

3 回答 3

1

您应该考虑重命名您的类和属性以符合命名约定。使用单数名称,例如公共类 Order ... 而不是 Orders。使用 Id 作为所有字段的主键名称。以大写字母(帕斯卡大小写)开始所有属性,这将有助于框架理解您的模型。

要获取您想要的数据,只需使用:

var cust = db.Customers.Include("orders").Take(10);

如果您对约定进行更改,这将变为:

var cust = db.Customers.Include("Orders").Take(10);

您需要在数据上下文中设置 DbSet,但看起来您已经弄清楚了,因为您使用的是 db.Orders。无论如何,这里是代码(客户转换为单数):

public DbSet<Customer> Customers { get; set; }
于 2012-11-23T07:56:28.890 回答
0

在视图中:从...开始

@model IList<ProjectName.Customers>

如果你想绑定多记录然后

foreach(var c in Model)
{
@Html.DisplayFor(modelItem => c.OrderName) 
}

除此以外@model.Orders.OrderNames....

于 2012-11-23T07:11:46.233 回答
0
public ViewResult Index()
    {
        var cust = db.Customers.get().Select(x => new Customers
                {
                    CustomerID = x.CustomerID,
                    OrderName = x.Orders.OrderName,
                });
        return View(cust.Take(10).ToList());
    }

看法:

@model IList<ProjectName.Customers>

foreach(var c in Model)
{
@Html.DisplayFor(modelItem => c.OrderName) 
}
于 2012-11-23T08:32:52.067 回答