最近被一個數據庫超時問題,弄的很崩潰。花了很多時間,終於解決了。下面加色和加粗的地方重點看看。
var cx_xscj = from aa in sjklj.xgk_xscj
select aa;
foreach (var kk in cx_xscj)
{
sjklj.xgk_xscj.DeleteObject(kk);
}
sjklj.SaveChanges();
sjklj.Connection.Close();//不用了,要關閉數據庫釋放資源,否則會引起超時問題
//建立一個用來離線查詢並存儲的dataset
SqlConnection sqlcon = new SqlConnection(conn);
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlcon;
sqlcmd.CommandTimeout = 1800;//30分鍾
sqlcmd.CommandText = "select * from xgk_xscj";
SqlDataAdapter sda_gx_xscj = new SqlDataAdapter(sqlcmd);//面向全國的用戶,還要設置where條件獲取指定的學校的指定年級和年度的數據,盡量少。
SqlCommandBuilder scb = new SqlCommandBuilder(sda_gx_xscj);//這個非常重要,否則可能保存失敗
DataSet ds_xscj_pm = new DataSet();
sda_gx_xscj.Fill(ds_xscj_pm, "xscj");
sda_gx_xscj.Update(ds_xscj_pm, "xscj"); //.Update(ds, "xscj");//放到最后執行
ds_xscj_pm.Dispose();
ds_xscj_tj.Dispose();
sda_gx_xscj.Dispose();
sqlcon.Close();