4

我对 Web 服务、C# 和 .NET 还是很陌生。我想在我的 web 方法中使用一个连接对象,以便在数据库中写入数据,但是我没有在哪里实例化这个对象,实例化它然后在 web 方法中销毁它是非常荒谬的。我希望我的连接实例每次都可以访问,所以是否有一种构造函数或其他东西可以正确地做到这一点。

4

2 回答 2

3

您将需要在您的 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 回答
3

我知道你的意思:你不想在每个方法中重复连接管理代码。确实,那将是荒谬的。

我这样做:我使用这种技术来创建每个请求的连接。当 WCF 调用结束时,我会破坏连接。

因此,在通话期间,我可以依靠此连接。它将被正确清理。

不幸的是,WCF 没有内置的 HttpContext.Items 等效项,因此我们必须使用扩展来破解它。

于 2012-04-15T14:07:30.340 回答