エンティティを更新したいときに、関連するエンティティを持つエンティティを新しいコンテキストにアタッチすることに頭を悩ませようとしています。
LanguageID フィールドを持つ Person テーブル (Personnel に一般化) があります。このフィールドは、主キー (1-M) として LanguageID を持つ別のテーブル Language に EF を介して FK としてリンクされます。特定の Persons 言語設定を更新する必要がありますが、下にマークされた行で「IEntityChangeTracker の複数のインスタンスによってオブジェクトを参照できません」というエラーが表示されるため、関係は古いコンテキストにリンクされたままのようです。Personnel (Person) エンティティの関係として、Language エンティティを新しいコンテキストにアタッチする方法はありますか?
エンティティは、PreferredLanguage を返すために .Include() メソッドを使用する元の GetPersonnel() メソッドで切り離されませんでした。
PreferredLanguage は、Person テーブルの NavigationProperty 名です...
public static void UpdateUser(Personnel originalUser, Personnel newUser )
{
using (AdminModel TheModel = new AdminModel())
{
((IEntityWithChangeTracker)originalUser).SetChangeTracker(null);
((IEntityWithChangeTracker)originalUser.PreferredLanguage).SetChangeTracker(null);
TheModel.Attach(originalUser);--Error Line
TheModel.ApplyPropertyChanges("Person", newUser);
TheModel.SaveChanges();
}
}
ありがとうショーン