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,在更新之前,您不需要将它附加到上下文,因为它已经在那里了。