2

У меня есть объект Рекомендации и объект FeedbackLevel и объект FeedbackLevel Навигационное свойство внутри Рекомендации объектаEF4 ПОКО - Обновление свойство навигации

Рекомендации 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 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 должна быть сохранена. Как я могу заставить его вызвать его?

ответ

0

Не уверен, что именно то, что вы пытаетесь сделать здесь, , но если вы пытаетесь сделать обновление, простой способ заключается в

1) у а, GET [EntityName] по идентификатору, использование включает в себя, чтобы получить любой ребенок свойства

2) обновить атрибуты

3) убедитесь, что состояние объекта изменяется

4) Сохранить изменения

Выполняя GET сначала, вам не нужно прикреплять его к контексту перед обновлением, поскольку он уже будет там.