2008-12-12 40 views
1

我有一個訂單集合。我想打一次數據庫,檢索訂單,存儲它們,然後能夠通過多種形式訪問這個集合。我知道在asp.net中,你可以使用諸如應用程序對象或會話對象之類的東西,但你如何在勝利形式的應用程序中做到這一點?我正在考慮創建一個可以通過多種形式,類或任何地方訪問的靜態集合。這聽起來是否正確,是否可行?在多個類上拉伸對象的好方法

感謝

回答

1

WebForms的根本區別& WinForms是WinForms是有狀態的。換句話說,您可以確保一次加載的對象在程序關閉之前可用。 WebForms也是如此,因爲HTTP是無狀態的,並且ASP.Net編織了許多「魔術」[ViewState,服務器會話,Cookie,隱藏字段等]以將Web應用程序的頁面粘合在一起。

通過這種基本的方式概念,很容易在WinForms中創建一個全局可用的對象。使用Singleton/Static類並分配其成員。你總是可以說。實例.. [在靜態類/具有靜態屬性的類的情況下]從任何表單檢索值。

One Gottcha是「線程安全」...又名..多個表單同時讀寫靜態屬性。如果你能照顧到這一點,休息是一件輕而易舉的事情。

爲了您的上述問題:

你可以有自己的單級高速緩存,將緩存記錄。 Cache類將是一個自定義集合實現。您需要確保它是線程安全的[或者確保您的應用程序僅加載一次,然後從中讀取] ...如果您希望對實體對象中反映的數據庫進行更改,則可能需要考慮完整的ORM 。

CacheList.OrderCache[orderNo].Customer.Address.City = "Las Vegas";

class static CacheList { public static Cache OrderCache {get; internal set;}

}

public class Cache : CollectionBase where T : Entity { .....

}

0

你應該有反正訪問數據庫中的某些數據對象,對不對?將其包裝在CacheProxy類中,如果數據庫沒有本地副本,則將其命名爲數據庫。我聽到你也可以use the System.Web cache in Winforms

相關問題