ASP.NET。 EF 6.0.2,MVC 5.1.1。 我有一张表有2个外键到同一张表。
public class order
{
public int orderID {get;set;}
public int deliveryplaceID {get;set;}
public int invoiceplaceID {get;set;}
public virtual Place Deliveryplace {get;set;}
public virtual Place Invoiceplace {get;set;}
}
保存对象工作正常,并填充了数据库表中的deliverplaceID和invoiceplaceID。 现在,当我尝试显示数据时:
public ActionResult Index()
{
var orderdata = db.order.Include(d => d.Deliveryplace).Include(i => i.Invoiceplace);
return View(orderdata.ToList());
}
在视图中:
@Html.DisplayFor(modelItem => item.Deliveryplace.Zip)
@Html.DisplayFor(modelItem => item.Invoiceplace.Zip)
它没有显示这两个字段的任何数据。显示了其他字段,也显示了其他外表的其他字段。 有什么想法吗?
答案 0 :(得分:0)
解决。谢谢你的小费JC。你让我走的正确。
解决方案是 1)在订单表中定义外键
public class order
{
public int orderID {get;set;}
public int deliveryplaceID {get;set;}
public int invoiceplaceID {get;set;}
[ForeignKey("deliveryplaceID")]
public virtual Place Deliveryplace {get;set;}
[ForeignKey("invoiceplaceID")]
public virtual Place Invoiceplace {get;set;}
}
2)在modelContext中定义:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<order>()
.HasRequired(c => c.Deliveryplace)
.WithMany()
.WillCascadeOnDelete(false);
modelBuilder.Entity<order>()
.HasRequired(c => c.Invoiceplace)
.WithMany()
.WillCascadeOnDelete(false);
}