2011-04-23 51 views
0

嗨,我正在WPF中開發一個應用程序,它將有分頁記錄(我根據篩選器或每頁用戶需要的頁數被顯示)。當我們在DataBase中進行更新時,在DataGrid內容中進行了更新

所以我從來沒有認真對待過DataGrids,我問的是什麼,當我們使用DataGrid更新數據庫表時,最好的方法和更好的策略是什麼?

我們檢測到已更改的行,或者我們更新了數據庫中的整個表,有什麼更好的方法?

因爲用戶可以更改一行,然後其他,並想象用戶更改50行,應用程序將不得不連接50次與數據庫?

回答

1

Unit of work可能是此問題最常見的基礎結構解決方案,基本上它存儲應用於數據的更改以及準備在事務中將它們執行到數據庫時。有許多ORM映射器,例如Entity FrameworknHibernate已經爲你做了這個,所以ID從那裏開始。

編輯

this示例實現,因爲它聽起來像是你的意見yould需要編寫自己的版本,但基本上你建立插入,更新列表,刪除應該發生,並且在執行它們所有一個trasaction,首先插入,然後更新,然後刪除,但Id建議你看看一個ORM,就像我上面描述的那樣,他們已經有這個功能。

+0

但我不明白它將如何做一件事...如果我有表之間的關係,當我做一個查詢到主表,我沒有得到的ID,但在另一列中的相應值。所以當我從DataGrid中獲取行時,我得到的值不是列中與另一個表有關係的id。所以在我把我的更新操作放入類似你之前的建議中,我可能必須得到相應的ID或不是? – Miguel 2011-04-23 17:11:19

+0

好吧,也許你可以多討論一下有關數據的問題,你是總結數據庫行並顯示它們嗎?或者它是在數據庫中的一行顯示爲網格上的一行? – 2011-04-23 17:28:00

+0

不,我得到整個表格並將其作爲Source放置在DataGrid中。但該表具有外鍵。因此,當我執行查詢時,我使用Inner Joins來顯示Id的值,但不顯示與這些ID相對應的值。所以在我的DataGrid中,我沒有顯示ID的,但其他值。當我想更新我的數據庫時,我正在使用DataGrid中的事件OnRowEditEnding,並且當事件被觸發時,我從已更改的行中獲取值,並通過SP更新數據庫。在這種情況下,我們將在SP中發現與這些值相對應的ID以更新相關表格? – Miguel 2011-04-23 17:44:28