2010-05-07 28 views
1

我有一個PrivilegeGroup表,Privileges表和link表,因爲PrivilegeGroup表和Privileges表是一個多對多的關係。我正考慮在應用程序啓動時從數據庫開始將PrivilegeGroup表和Privilege表的所有內容加載到內存中。我應該如何儲存這些信息?

我想將它們保存在一個容易查找的表單中。通常我們會通過GroupId查找PrivilegeCode

哪種結構適合此目的?列表數組?字典?

+1

這是一個WinForms或Asp.Net應用程序嗎? (或者可能是控制檯應用程序或在Sharepoint中託管的工作流等)重要的是,因爲我們可能會引導您使用衆所周知的安全模型,而不是使用自己的本地安全模型。 (例如,標準的Asp.Net成員資格或活動目錄,而不是你看起來朝向的方向。)當涉及到安全模型時,自己滾動幾乎不是一個好主意。 – David 2010-05-07 19:37:24

回答

2

如何

Dictionary<GroupIdType, HashSet<PrivilegeCodeType>> 

這種方式可以通過GroupId的快速獲取特權HashSet的,和做快速測試對HashSet中,以檢查是否存在特權。

3

這聽起來像你希望能夠通過GroupId查找PrivelegeCode並且不需要任何其他數據?如果是這種情況,那麼你可以使用一個Dictionary<GroupIdDataType, PrivelegeCodeDataType>這應該使查找容易。

至於在啓動應用程序時一次加載它們,我想這隻取決於應用程序運行時更改此數據是否對程序有任何影響,而無需重新啓動它。

+0

一個GroupId將擁有多個PrivilegeCode。 – 5YrsLaterDBA 2010-05-07 20:48:16

+0

是的,起初我沒有想到 - 多對多的關係 - 我會用Chris Taylor的答案(使用HashSet作爲字典值)。我會編輯我的反映相同的事情,但他應該獲得提供更好的答案的功勞。 – 2010-05-07 21:13:57

2

我建議你將數據保存在DataTable類的實例中。

+0

不錯的建議。易於使用,易於過濾和執行查找..與字典相比,性能有所降低,但這可能可以忽略不計。 – David 2010-05-07 20:19:44

相關問題