第一排我在SQL Server中負責將記錄到數據庫中的存儲過程:LINQ到SQL插入存儲過程排除將
ALTER proc [dbo].[Sp_Add_Item_Decription]
@orderid int,
@itemid int,
@qty decimal(18, 2),
@price decimal(18, 2)
as
insert into [ResturantDB].[dbo].[ItemDescribtion] ([OrderID], [ItemID],[Qty], [Price])
values (@orderid, @itemid, @qty, @price)
我使用LINQ到SQL生成下面的代碼,但是當我執行此代碼,如果datagridview包含一行而不是插入到數據庫中,但是如果datagridview包含多個記錄,則除第一行外,將插入所有記錄。我不知道是什麼問題。我需要插入所有的datagridview記錄。
private void Button3_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = DTL;
if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrEmpty(textBox3.Text))
{
for(int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
resturantDataContext addorderdes = new resturantDataContext();
addorderdes.Sp_Add_Item_Decription(Convert.ToInt32(textBox1.Text),
Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value),
Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value),
Convert.ToDecimal(dataGridView1.Rows[i].Cells[4].Value));
addorderdes.SubmitChanges();
}
RadMessageBox.Show("RECORD ADDED!");
}
}
備註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並將其他內容用作前綴 - 或者根本沒有前綴! –
也許你應該在詢問我們之前考慮調試你的應用程序...... –
另外當你只使用上下文來調用存儲過程時,不需要提交ChangeChanges。您不需要每次都創建上下文,只需將外部環境移至for循環即可 –