2

Recommendation オブジェクトと FeedbackLevel オブジェクトがあり、FeedbackLevel オブジェクトは Recommendation オブジェクト内のナビゲーション プロパティです

推奨 int EntityKey; FeedbackLevel レベル。

新しいオブジェクトの挿入は、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 をそれに再割り当てするなど、他のいくつかの方法も試しましたが、うまくいきませんでした。

アップデート:

保存呼び出し中に 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 を保存する必要があることさえ認識していないようです。どうすればそれをトリガーできますか?

4

1 に答える 1

0

ここで何をしようとしているのか正確にはわかりませんが、更新をしようとしている場合、簡単な方法は

1) ID で [entityName] を取得し、include を使用して子プロパティを取得します。

2) 属性を更新する

3) エンティティの状態が変更されていることを確認する

4) 変更を保存

最初に GET を実行すると、更新する前にコンテキストにアタッチする必要がなくなります。

于 2011-11-04T04:34:53.993 に答える