2010-08-27 59 views
4

我已將複選框列表綁定到列表<>的業務對象集合。當我的複選框列表中選中某個項目時,我想將選定的業務對象標記爲髒。將業務對象標記爲髒?

  1. 如何獲取行點擊當前業務對象並更改其屬性?
  2. 此外,如何在多用戶環境中塑造這種形狀?
+1

需要更多的細節。 – Jamie 2010-08-27 06:57:53

+0

這是在引用以下線程,因爲我做了一些進展.http://stackoverflow.com/questions/3581791/changed-rows-from-list-of-objects – 2010-08-30 03:51:24

+1

這不是一個答案,實際上可能不是所以請謹慎使用,但您是否考慮過工作單元設計模式。當用戶編輯它們時,您可以一次性發送更改到服務器,然後通知其他連接的客戶端進行更改? – JonWillis 2010-09-02 21:21:00

回答

5

這實際上是一個關於併發性的問題:您如何讓多個用戶修改相同的業務對象,並確信他們的每個編輯都會成功保存。

如果您將對象存儲在緩存中,則可以創建一個包含「IsDirty」布爾屬性的部分對象。在選中項目時,將相關對象的IsDirty屬性設置爲true。

處理併發的方法很多,您可以嘗試的一種方法是在檢查項目時檢查IsDirty屬性。如果該屬性爲false,則將該屬性設置爲true。如果該屬性爲真,則向用戶發回錯誤。一旦對象被保存,您將IsDirty屬性重置爲false。

當您嘗試使用您創建的用於保存對象的規則更復雜時,事情會變得越來越複雜。

+0

謝謝艾莉森。不會使用IS髒和ISNEW來解決問題。這樣,每個類都會繼承基礎,並且在保存時不需要將ISDIRTY設置爲false? – 2010-09-06 05:40:02

0

您可以將列表存儲在視圖狀態/會話狀態/緩存中,或者從數據庫重新獲取回發,然後您可以基於索引標記業務對象。就我個人而言,我會選擇通過一個包裝器方法來獲取業務對象列表,該方法將把它看成緩存,如果沒有,然後從數據庫中獲取它 - 這將允許緩存過期時間很短。

在多用戶場景中,它將取決於您如何管理併發性。請參閱article以快速瞭解ASP.NET中的併發性。