EF4 POCO - 更新导航属性

时间:2010-01-08 16:51:55

标签: entity-framework poco entity-framework-4 navigation-properties

我有一个Recommendation对象和一个FeedbackLevel对象,而FeedbackLevel对象是一个Recommendation对象内的导航属性

建议   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代码成功而没有任何更改!

我还尝试过其他一些方法,例如首先获取现有的建议书,然后在没有任何运气的情况下重新分配反馈级别。

更新

以下是我在保存调用期间从sql profiler捕获的内容:

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。我怎么能让它触发呢?

1 个答案:

答案 0 :(得分:0)

不确定你在这里尝试做什么, 但如果您尝试进行更新,那么简单的方法就是

1)通过id执行a,GET [entityName],使用include获取任何子属性

2)更新属性

3)确保实体状态被修改

4)保存更改

首先执行GET,您不需要在更新之前将其附加到上下文,因为它已经在那里。