2010-05-26 40 views
0

短的版本:ASP.NET SqlDataSource的更新和創造FK參考

我有一個綁定到具有與左側的SelectCommand數據源的網格視圖在其加入,因爲FK可以爲空。在更新我想在FK表中創建一個記錄,如果FK爲空,然後用新記錄ID更新父表。這可能只與SqlDataSources有關嗎?

詳細版本:

我有兩個表:公司和地址。列Company.AddressId可以爲null。在我的ascx頁面上,我使用SqlDataSource來選擇公司和地址的左連接以及GridView來顯示結果。通過讓我的UpdateCommand和DeleteCommand的SqlDataSource執行兩個由分號分隔的語句,我可以使用GridView的編輯和刪除功能同時更新兩個表。

我遇到的問題是當Company.AddressId爲null時。我需要做的是讓數據源在Address表中創建一條記錄,然後用新的Address.ID更新Company表,然後照常進行更新。爲了一致性/簡單起見,我希望僅在可能的情況下使用數據源來完成此操作。是否有可能讓我的數據源做到這一點,或者可能添加第二個數據源到頁面來處理這些?

一旦我有這個工作,我可以弄清楚如何使它與InsertCommand一起工作,但如果你在一個捲上,並有一個答案,如何使飛行,並隨時提供它。

謝謝。

回答

0

執行由 分號分隔兩個語句

我看不出有任何理由,這是不可能做到的都INSERT和UPDATE兩個語句用的SqlDataSource就像你在這裏做。

但是,您知道,如果您有大量流量或用戶同時使用應用程序,則可能會遇到一個問題,即一個用戶執行某些操作會影響另一個用戶,並且意外的結果可能會級聯和混亂建立你的數據。一般來說,對於你正在做的事情 - 涉及主鍵或外鍵的INSERT和UPDATE,通常使用SQL TRANSACTION。但是,您必須在SQL數據庫上將它們作爲SQL存儲過程(或函數)執行。你仍然可以從你的SqlDataSource調用它們,但只需告訴它你正在調用一個存儲過程。