using
ステートメントの使用に関するいくつかの質問があります。私はそれが何をしているのか理解しています(私が正しいとすれば、それは開いている接続などをすべて破棄します)。しかし、私はそれを正しく使うべきか確信しています。Entity Frameworkで 'using'ステートメントを使用する正しい方法
私が取り組んでいるプロジェクトには、Entity Frameworkには必要ないリポジトリが含まれていません。
基本的に私のメソッドでは、Guidsのリストをパラメータとして取得しています。これらのIDはレストラン向けであり、これらのレストランで与えられたすべてのレビューを取得したい。
ので、現在、私はそうのようなリストを取得しています:
public void DoSomething(List<Guid> restaurantIds)
{
List<Review> reviews;
using (var db = new Context())
{
reviews = db.Reviews.Where(x => restaurantIds.Contains(x.RestaurantId)).ToList();
}
//More stuff here
}
が、これは使用した文の外でリストを宣言するために、共通の悪い習慣ですか?私はいくつかの代替案を考えましたが、私は何が良いか分かりません。
- 正確に同じクラスに別のメソッドを作成し、リストを返します。この方法で私の
DoSomething
メソッドでは、私はちょうどこのように使用することができます:List<Review> reviews = GetReviewsFromRestaurants(restaurantIds);
- 私はまず文脈を作成し、使用ブロックなしでLINQ文を使用する必要があります。私は
.Dispose()
に電話しなければなりません。
私の例のようにusing
ステートメントを使用すると問題がありますか?もしそうなら、代わりの方が良いでしょうか?そうでない場合は、このリストをどのように取得するべきかの例を教えてください。
悪い練習と呼んでいることを詳しく説明できますか? usingステートメント外の変数の宣言? – Reniuz
はい、そうです。私は私のポストにそれを追加します。 – RandomStranger
これは悪い習慣ではありませんが、コンテキストが破棄された後に読み込みナビゲーションプロパティを遅延させようとすると、この場合に問題が生じる可能性があります。 –