我需要將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