2011-06-22 16 views
0

私は大規模なWebサイトを開発しています.SQLプロファイラでlinqクエリをチェックしていたとき、約30回のログイン/ログアウト操作があることがわかりました。私は、すべてのDataContextに対してオープンな接続を使用してこれらのアクションを減らしたいと思いますが、どのように行うのかわかりません。提案はありますか?すべてのLinq DataContextに開かれた接続を使用

答えて

0

これは非常に悪い考えです。大規模なスケーラブルなWebサイトを作成しているため、Linq-to-SQLは接続自体を処理します。

Linq-to-SQLは、内部で接続の開始と解放を効果的に処理します。接続が正しく再利用され、単一のコンテキストごとに開かれないように、デフォルトのADO.NET接続プーリングを使用します。

すべてのコンテキストで単一接続を使用するのは、アプリケーションを拡張性がなく動作しないものにすることです。単一の接続では1つのトランザクションのみが許可されるため、2つの要求が同時に変更を行い、独自のトランザクションを使用すると、アプリケーションがクラッシュします。

コンテキストを共有せず、接続を共有しない - ADO.NETで接続プーリングを処理し、すべての単一の要求に対して新しいコンテキストを作成するか、深刻な問題が予想されます。

+0

ありがとう、私はそれをやるでしょう。 – Alireza

+0

@ LadislavMrnka - あなたの答えから、DataContextインスタンスを作成しても、データベースへの新しい接続が作成されたというわけではないことがわかります。それを確認していただけますか?私が読んだところは、そうでないところを示すようです。 linq-to-sqlの場合、データベース接続がどのように作成され、リリースされるかについてのリンクを提供してください。 – Brian

+0

@Brian:linq-to-sqlについてではなく、SQLサーバーに接続するときにデフォルトで使用される接続プーリングについてです。あなたは、ネットワーク接続の再利用(DataContextがデータを取得または保持する必要があるたびに毎回開くのではなく)のように考えることができます。 –

関連する問題