0

デバッガーを使用するたびに、データをデータベースに保存するコード行に到達する前にデバッガーを停止しても、ストアド プロシージャの 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
4

1 に答える 1

1

条件を指定して実行中のコードのセクションをスキップするために使用できますpreprocessor directives(例: この場合のデバッグ中)。このMSDNリンクを見てください

#define DEBUG
public class YourClass 
{
    POrder po = new POrder();          
    po.PODate = DateTime.Parse(txtPODate.Text);
    Break point here ->

    po.POVendorID = int.Parse(ddPOVendors.SelectedValue);
    #if (!DEBUG)
        po.AddNewOrder(); //this will not be executed during debug.
    #endif
    ....      
}
于 2012-11-16T17:34:10.567 に答える