我需要将WCF Web服务连接到SQL Server数据库。我只需要使用SQL来访问数据,不需要LINQ或实体框架。WCF数据库连接:只有一个数据库连接
我试图按照本教程: http://www.c-sharpcorner.com/UploadFile/rohatash/inserting-data-into-database-using-wcf-service/。 SqlConnection类似乎正是我需要使用,但是当我看到这个服务的方法:
public string InsertUserDetails(UserDetails userInfo)
{
// ...
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Rajesh;User ID=sa;Password=wintellect");
con.Open();
SqlCommand cmd = new SqlCommand("insert into RegistrationTable(UserName,Password,Country,Email) values(@UserName,@Password,@Country,@Email)", con);
cmd.Parameters.AddWithValue("@UserName", userInfo.UserName);
cmd.Parameters.AddWithValue("@Password", userInfo.Password);
cmd.Parameters.AddWithValue("@Country", userInfo.Country);
cmd.Parameters.AddWithValue("@Email", userInfo.Email);
int result = cmd.ExecuteNonQuery();
// ...
}
我很担心,因为很显然,数据库连接将在每个请求创建。
下面的代码结构的示例中,我想有:
public class Service : IService
{
public Company GetCompany(int key)
{
// Get existing database connection
// SELECT * from companies where c_key=key
// Return Company instance
}
}
我应该使用什么结构,使用SQL来访问数据,而不是建立在每个请求一个数据库连接?我可以让SqlConnection实例是静态的吗?我不明白WCF如何处理这个问题,将创建多少服务实例等。 谢谢你的帮助!
您可以创建静态:请参阅下面的回答 – 2015-02-24 19:43:41
每次连接都有什么问题?合并需要照顾管理费用。 – DonBoitnott 2015-02-24 19:44:43
我认为理想情况下,只要服务处于活动状态,就应该打开数据库连接,因为如果x客户端同时连接到Web服务,则会创建x个数据库连接。我对吗?什么是共享? @DavidP我想这样做,我只是想确保这种做法是正确的! – Michael 2015-02-24 19:55:37