EF 5を使用していて、遅延読み込みを有効にしています。データベースからエンティティを取得すると、完全に機能します。
これが私の問題です。データベース操作を実行するための汎用リポジトリがあります。
public int Update(T t) //Update method implemented at repository layer
{
dbSet.Attach(t);
context.Entry(t).State = EntityState.Modified;
return context.SaveChanges();
}
public T Update(T t, int id) //This Method calls the above method to
{
if (Update(t) > 0)
{
//Now entity is updated so retrieve the entity from the database.
return Get(id); //This line of code doesn't return entity with reference. It does return the updated entity.
}
return null;
}
これで、主キーを使用してエンティティをクエリして更新されたエンティティを取得すると、更新されたエンティティが表示されますが、参照プロパティはありません。例外がスローされるため、ここで遅延読み込みを使用することはできません。
エンティティを更新した後、dbSet.Localに更新されたエンティティがあることに気付きました。そのため、更新されたエンティティを取得する前にクリアしようとしましたが、うまくいきませんでした。また、コンテキストを介してエンティティをリロードしようとしましたが、ナビゲーションプロパティがリロードされません。ジェネリックリポジトリを使用しているため、Referenceプロパティを使用できません。私が達成できる唯一の方法は、コンテキストとdbsetの新しいインスタンスを破棄して作成することです。
リレーショナルプロパティが入力された更新済みエンティティを返したい。誰かが良い解決策を持っていますか?