2

我有一個建議對象和FeedbackLevel對象和FeedbackLevel對象是建議對象EF4 POCO - 更新導航屬性

建議 INT的EntityKey內的導航屬性; FeedbackLevel Level;

插入一個新的工程與AddObject()很好。這是我正在嘗試更新,這是行不通的。

recommendation.Level = myRepository.GetFeedbackLevel(newLevel); 
_context.Recommendations.Attach(new Recommendation { EntityKey = recommendation.EntityKey }); 
_context.Recommendations.ApplyCurrentValues(recommendation); 
_context.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave); 

上面的代碼基本上是我所擁有的一個緊湊版本。更新標量屬性可以正常工作,但我無法更新新的導航屬性,因爲avove代碼無需任何更改即可成功!

我也嘗試了其他一些方法,例如首先獲取現有的建議書,然後重新爲其分配FeedbackLevel而沒有任何運氣。

UPDATE:

以下是我在從SQL事件探查器捕獲的保存撥打:

exec sp_executesql N'update [dbo].[Recommendation] 
set [FeedbackComment] = @0, [LastUpdatedDate] = @1 
where ([RecommendationKey] = @2) 
',N'@0 varchar(255),@1 datetime,@2 int',@0='This is cool',@1='2010-01-08 10:06:06.5400000',@2=11 

它看起來像它甚至不知道FeedbackLevel需要保存。我怎樣才能觸發它?

回答

0

不知道到底是什麼你想在這裏做, 但如果你試圖做一個更新,簡單的方法就是

1)做一個,拿到[的entityName]按編號,使用包括讓任何一個孩子屬性

2)更新所述屬性

3)確保實體狀態被修改

4)保存更改

通過首先執行GET,在更新之前,您不需要將它附加到上下文,因爲它已經在那裏了。