最近、Entity Frameworkのレイジーロードとプロキシ生成をオフにしました。この前に、EFに新しい変更をコミットした後、オブジェクトグラフ全体を戻します。私が今やっていることは、コミット後、新しいオブジェクトを取得するためにリポジトリのFindByIdメソッドを呼び出すことです(newleyオブジェクトに戻すナビゲーションプロパティを含めています)。私の質問は、これは作成後の標準的な習慣か、クライアントが新たに作成されたオブジェクトを取得するためにサービスを再度呼び出す責任があるかどうかです。サービスのServiceおよびEntity Framework 4.1を使用している間に、新しく作成されたオブジェクトを保存して戻しますか?
保存方法:
私はちょうどオブジェクトが無効になって遅延ロードおよびプロキシの作成で作成された後、これがベストプラクティスであるかどうかを知りたいpublic SomeObject Create(SomeObject someObject)
{
_repository.Add(someObject);
_repository.UnitOfwork.Commit()
//this did not exist when lazy loading and proxy generation were enabled.
var newObject = _repository.FindById(someObject.Id);
return newObject;
//Before we would jsut return the created object because everything was loaded.
//return someObject
}
。私は他の開発者がこれをどう扱っているか知りたいと思っています。
保存してまだ手元にあるオブジェクトをロードする理由がわかりません。'FindById'が' Commit'が使っていたのと同じコンテキストを使うと、 'newObject'は' someObject'と同じオブジェクトを参照するだけで、まだコンテキストにアタッチされています。私の推測では、あなたの質問はナビゲーションプロパティの読み込みと関係がありますが、それは私には分かりません。 'FindById'は、以前の遅延ロードを置き換えると思われるすべてのナビゲーションプロパティに対して' Include'を含んでいますか? – Slauma
@Slauma、あなたはIncludesとナビゲーションのプロパティについて正しいです。私はコミット後にナビゲーションプロパティをロードしたい。 – DDiVita