4

私は、Web サービス、C#、および .NET の初心者です。データベースにデータを書き込むために Web メソッドで接続オブジェクトを使用したいのですが、このオブジェクトをインスタンス化する場所がありません。インスタンス化して Web メソッドで破棄するのは非常にばかげています。接続インスタンスに毎回アクセスできるようにしたいので、これを適切に作成するための一種のコンストラクターまたは何かがあります。

4

2 に答える 2

3

私はあなたが何を意味するのか知っています:あなたはすべての方法で接続管理コードを繰り返したくないのです。確かに、それはばかげているでしょう。

私は次のようにします。この手法を使用して、要求ごとの接続を作成します。WCF呼び出しが終了すると、接続を破棄します。

したがって、通話中は、この接続が存在することを信頼できます。正しくクリーンアップされます。

残念ながら、WCFにはHttpContext.Itemsに相当するものが組み込まれていないため、拡張機能を使用してハックする必要があります。

于 2012-04-15T14:07:30.340 に答える
3

Web メソッドでデータベース接続クラスをインスタンス化する必要があります。Webメソッドでそのようなオブジェクトをインスタンス化することについて、ばかげたことは何もないと主張します。

  • C# はobject-orientated言語です。オブジェクトを作成しないと、多くのことを達成することはできません。と
  • ほとんどの ADO.NET 接続オブジェクト (SQL Server と Oracle を含む) は接続プールを実装しているため、新しい接続オブジェクトを作成するたびにサーバーへの物理接続を作成する必要はありません。代わりに、データベース ライブラリが接続のプールを管理します。

Webサービスの呼び出し後に接続を確実に解放するために、次のようなことをお勧めします。

// This example uses SQL-Server connections, but most
// ADO.NET database drivers are similar.
using(SqlConnection conn = new SqlConnection(MyConnStr)) 
{
   UseConnection(conn);
} 
// connection released to pool here automatically.
于 2012-04-15T13:53:00.537 に答える