Entity FrameworkとASP.Net MVCの初心者です。ほとんどの場合、チュートリアルから深く理解することなく学習しました。 (私は.Net 2.0、ADO.NetとWebFormsに関する経験を持っています)Entity Framework - "Entities"オブジェクトをインスタンス化する方法
私の現在の疑念は、私のEntitiesオブジェクトをインスタンス化していることに由来しています。基本的には
私は私のコントローラでこれをやっている:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
私はこれが正しい方法だったと仮定ように私には十分な権威見えたいくつかのMSDNのブログでそれを見つけたので、私はこのようにそれをやっています。
しかし、私はこれについてかなり簡単ではないと感じています。それは私に多くのコードを保存しますが、私はやってするのに使用しています。接続を必要とし、その方法は、それをする必要があります他の人を呼び出す場合、それはとしてデシベルを渡します一つ一つの方法では
using (NorthWindEntities db = new NorthWindEntities() {
}
それらにパラメータ。 Linq-to-SQLが存在する前に、接続オブジェクトを使ってすべてをやったのです。
NorthWindEntitiesはIDisposableを実装していますが、慣例ではDispose()メソッドを呼び出す必要があります。私はそうではありません。
あなたはこれについてどう思いますか?
私が行っているようにエンティティオブジェクトをインスタンス化するのは正しいですか?それぞれのクエリでそれらを開いたり閉じたりして、接続を処理する必要がありますか?
または、using()節を明示的に削除する必要がありますか?
ありがとうございます!
わかりました。 今、質問は... 私は事を間違ってやっていますか? 本当にEntitiesオブジェクトを破棄する必要はありますか? 私がしないとどうなりますか? SQL Serverへの接続が「リーク」するのですか? –
ObjectContext.Disposeはあまり機能しません(Reflectorを参照)。しかし、それが変わる可能性があると推測することは合理的であり、あなたはそれを処分すべきです。 –