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

本文关键字:属性 导航 更新 实体 为什么 | 更新日期: 2023-09-27 18:36:16

我正在使用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

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

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

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