2009-08-15 2 views
27

Entity Frameworkの "Entities"オブジェクトをインスタンス化し、そのEntitiesオブジェクトを使用して2つのクエリを作成すると、接続はどうなりますか?Entity Frameworkはいつ開いてデータベース接続を閉じますか?

  • 私はオブジェクトをインスタンス化するときに接続を開き、オブジェクトを処分すると閉じますか?
  • 実行する1つのクエリごとに接続を開いたり閉じたりしますか?

どちらの場合でも、他のことをするように変更することはできますか?

+2

6歳の質問に非常に重要な編集だったWow @ pb2q!うまくやった! –

+0

dMagiola:問題ありません。重要なものやそれ以外のもの、古いものや新しいものを改善するのに役立ちます。仲間に尋ね続ける! – pb2q

答えて

26

基本的にリクエストが呼び出されると開き、結果が破棄されたり消費されたりすると閉じます。手動でオープン/クローズまたはこの記事では、より完全な説明がある

...オブジェクトコンテキストを使用して同じ接続を使用することができます - ここで http://msdn.microsoft.com/en-us/library/bb738582.aspx

ですがどのようにするにはhttp://msdn.microsoft.com/en-us/library/bb738461.aspx Connection- エンティティを使用して上

3

EF6では動作が多少変更されているため、開いている接続を渡すか、後からEF接続を開くことができます。チェックアウトhttps://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

リンクのおかげで、C#の 'using'節を介してオープンな接続を宣言する方法はありませんか?例えば'(var conn = openAConnection())を使用しています。共有しているリンクは、関連するコンテキストが処理されたときに閉じられる接続の手動オープンを示しています。ちょうど直観的でなく、ハッキリです。 – aaaaaa

+0

@aaaaaa - おそらくEF5と前の例を見ていますか? 2番目のコード例では、あなたが望むように 'using'節があります。実際に接続で手動で何かをしたい場合は、これについて心配する必要があることに注意してください。 EFの外部でステートメントを実行する。あなたがそれを必要としない場合は、接続の開閉について考える必要はありません。 – Rory

+0

"ES6と今後のバージョンでの動作": 'conn.Open();'それは私を悩ます行です。はい、ストアドプロシージャから複数の結果セットを取得する必要があります(ビューごとに1つのDBリクエストを保持しようとしています)。 – aaaaaa

関連する問題