2015-10-27 93 views
0

我有一个Expenses and Categories表。我用少量条目播种了这些表格,但是当从数据库中取出时,Category属性为null。我希望它会自动填入分类表中的条目。我错过了什么?MVC4外键属性为空

型号:

public class Expense 
{ 
    public int ExpenseId { get; set; } 

    [DataType(DataType.Currency)] 
    public decimal Amount { get; set; } 

    [ForeignKey("CategoryId")] 
    public Category Category { get; set; } 

    [Required(ErrorMessage = "You must select some category!")] 
    public int CategoryId { get; set; } 
} 
public class Category 
{ 
    public int CategoryId { get; set; } 
    public string Description { get; set; } 
    public virtual ICollection<Expense> Expenses { get; set; } 
} 

查看:

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Amount) 
     </td> 
     <td> 
      @item.CategoryId 
     </td> 
     <td> 
      @item.Category.Description //NullReferenceException here 
     </td> 
    </tr> 

控制器:

// GET: Expenses 
    public ActionResult Index() 
    { 
     return View(db.Expenses.ToList()); 
    } 
+0

为什么你没有虚拟财产的费用类别? – code

回答

1

尝试标志着类别财产virtual。导航属性需要是虚拟的,以支持延迟加载,如果它不是急于加载。

+0

是的!谢谢!出于好奇,我会如何急切地加载这个? –

+1

db.Expenses.Include(i => i.Category).ToList() – Paul