簡體   English   中英

有ID值時的實體框架更新

[英]Entity Framework Update when there's an Id value

簡短的問題是,當Poco類具有主鍵字段的值而沒有插入值時,我可以讓EF執行更新嗎? 正是NHibernate的方式。

除非我誤會了,否則EF方法真的很丑。

首先,不要使用.Add(entity)進行插入或更新,而使用.Add進行插入和更新:

context.MyEntities.Attach(entity);

我嘗試過,但是什么也沒保存。 閱讀此內容后,我發現缺少設置更改后的狀態? 但是我的上下文沒有ObjectStateManager,因此我需要以下內容:

var manager = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager;

對我來說,這似乎是一種非常復雜且笨拙的方法。 我可以像NHibernate一樣使EF工作嗎? (如果不是這樣,我在項目中還不夠早,可以淘汰EF並重新使用NHibernate)

您必須使用context.Add(entity)才能使Entity Framework知道它需要跟蹤該對象的更改。 如果該實體已經存在於上下文中,則當您調用context.SaveChanges()時,EF將自動跟蹤對它的更改並將這些更改推送到數據庫中。

您正在附加一個實體,因此在保存更改之前應嘗試EntityState = Modified。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM