デバッガーを使用するたびに、データをデータベースに保存するコード行に到達する前にデバッガーを停止しても、ストアド プロシージャの 1 つが実行されます。
どうすればこれを防ぐことができますか? データベースに不完全な行を入れたくありません。
POrder po = new POrder();
po.PODate = DateTime.Parse(txtPODate.Text); <-- Breakpoint here
po.POVendorID = int.Parse(ddPOVendors.SelectedValue); <-- Stop Debugging here
まだ到達しpo.AddNewOrder
ておらず、デバッガーを停止しているため、ストアド プロシージャはまだ実行していません。
po.AddNewOrder();
POrder
クラス:
public DateTime PODate { get; set; }
public int POVendorID { get; set; }
public void AddNewOrder()
{
SqlConnection con = new SqlConnection(ss.GetConectionString());
SqlCommand cmd = new SqlCommand("uspAddNewPOrder", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parPODate = new SqlParameter("@PODate", SqlDbType.Date);
parPODate.Value = PODate;
cmd.Parameters.Add(parPODate);
SqlParameter parPOVendorID = new SqlParameter("@POVendorID", SqlDbType.Int);
parPOVendorID.Value = POVendorID;
cmd.Parameters.Add(parPOVendorID);
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exp)
{
throw new Exception(exp.Message.ToString());
}
finally
{
cmd.Dispose();
con.Close();
}
}
ストアド プロシージャ コード:
ALTER PROCEDURE [dbo].[uspAddNewPOrder]
(
@PODate datetime = null,
@POVendorID int= null
)
AS
BEGIN
INSERT INTO PurchaseOrders.[dbo].[tblPurchaseOrders]
(
PODate,
POVendorID
)
VALUES
(
@PODate,
@POVendorID
)
END