为什么在更新实体时需要重置所需的导航属性?

时间:2013-10-21 06:52:12

标签: c# entity-framework

我正在使用EF5 WinForms并拥有一个发票实体列表。 我只是想更新发票的一个属性,但是如果我也不更新导航属性,我在SaveChanges上收到错误。

为什么?

 var unpostedInvoices =   db.Invoices.Where(  o => (o.PostStatus ==
 (int)PostStatus.UnPosted) ).ToList();

    foreach (invoice inv in unpostedInvoices) 
    {
        inv.PostStatus = (int)PostStatus.Posted)
        inv.User = inv.User;    // if this line is not put in I get an error:  "The user field is required" 
    } 
    db.SaveChanges

1 个答案:

答案 0 :(得分:1)

将Include方法调用添加到初始查询中:

var unpostedInvoices =   db.Invoices.Include("User").Where((o => (o.PostStatus == (int)PostStatus.UnPosted) ).ToList();