开发者

EF4 POCO - Updating a navigation property

开发者 https://www.devze.com 2022-12-16 07:15 出处:网络
I have a Recommendation object and a FeedbackLevel object and the FeedbackLevel object is a navigation property inside a Recommendation object

I have a Recommendation object and a FeedbackLevel object and the FeedbackLevel object is a navigation property inside a Recommendation object

Recommendation int EntityKey; FeedbackLevel Level;

Inserting a new one works just fine with AddObject(). Here's what I'm trying with the update, which doesn't work.

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

The code above is basically a compact version of what I have. Updating a scalar property works just fine, but I can't update a new navigation property as the avove code succeeds without any changes!

I've also tried a few other methods like 开发者_开发百科getting an existing Recommendation first and then re-assigning the FeedbackLevel to it without any luck.

UPDATE:

Here is what I captured from the sql profiler during the save call:

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

It looks like it does not even know that the FeedbackLevel needs to be saved. How can I get it to trigger it?


Not sure exactly what your trying to do here, but if your trying to do an update, simple way is to

1) do a, GET [entityName] by id, use include to get any child properties

2) update the attributes

3) make sure the entity state is modified

4) Save changes

By doing a GET first, you wont need to get attach it to the context before you update, as it will be already in there.

0

精彩评论

暂无评论...
验证码 换一张
取 消