2015-04-17 93 views
1

我有以下方法試圖更新數據庫表(運輸成本)中的單個列(不是對象的整個圖形!):實體框架6-無法更新表中的單個列

public void UpdateShippingCost(Entities.ShoppingCart shoppingCart) 
    { 
     // Map from domain entity to database object 
     var shoppingCartRecord = Mapper.Map<ShoppingCart>(shoppingCart); 

     shoppingCartRecord.ShippingCost = 99.99M; 

     dbContext.ShoppingCart.Add(shoppingCartRecord); 

     var entry = dbContext.Entry(shoppingCartRecord); 
     entry.Property(e => e.ShippingCost).IsModified = true; 
     dbContext.SaveChanges(); 
    } 

在執行entry.Property(e => e.ShippingCost).IsModified = true;線,我得到以下錯誤:

Additional information: SetModifiedProperty cannot be called because the object is not in a modified or unchanged state. 

怎麼能這樣呢?我當然修改了這個對象。

+0

在您請求實體條目之前調用'Add()'。我猜這個對象的確處於'Added'狀態。當整個對象將被保存爲'Added'時,將其中一個屬性標記爲'Modified'的意義何在? – haim770

回答

4

致電DBSet<>.Add()將標記該實體爲Added。因此,將特定屬性標記爲Modified是沒有意義的。

爲了更新現有的實體,請致電DbContext.Attach() EF開始跟蹤實體,而不是DbSet<>.Add()

+0

謝謝,就是這樣。我粗心大意,打電話。加入,而不是.Attach。 –