0

通常の Controller と ApiController のコンテキストのProxyCreationEnabledandLazyLoadingEnabledがそれぞれ and に設定されているtrueとしfalseます。

状態を に設定する EF でエンティティを更新する方法がありますEntityState.Modified

_context.Entry(newEntity).State = EntityState.Modified;
_context.SaveChanges();

エンティティがロードされると、Controllerすべてが期待どおりに機能します。コンテキストのそのインスタンスのプロキシを無効にするため、ApiControllerナビゲーション プロパティを有効にすることについて。null

プロパティを変更したり、その状態を に設定しModifiedて変更を保存するとどうなりますか? エンティティ フレームワークはこれらのnullナビゲーション プロパティで何をしますか?

4

1 に答える 1

2

独立キー関連付けを使用しているか、外部キー関連付けを使用しているかによって異なります。

独立した関連付けの場合 - これらは、モデル内のプロパティとして外部キーを持たず、ナビゲーション プロパティのみを持つ関連付けです。状態を に設定すると、データベース内のナビゲーション プロパティと外部キーの値には何も起こりませんModified。生成された UPDATE ステートメントには FK 列の値の変更が含まれないため、それらは変更されません。ちなみに、ナビゲーション プロパティが ではない 場合も同様ですnull。エンティティの状態を に設定しModifiedても、ナビゲーション プロパティには影響せず、スカラー プロパティのみに影響します。

外部キー アソシエーション (モデル内のプロパティとして外部キーを持つアソシエーション) がある場合、状態を に設定すると、外部キー プロパティはスカラー プロパティであるためModified、マークされます。Modifiedその結果、ナビゲーション プロパティが であっても、現在の FK プロパティ値がデータベースに書き込まれ、関係が変更される可能性がありますnull

于 2013-05-29T23:41:52.930 に答える