我有一個PrivilegeGroup
表,Privileges
表和link
表,因爲PrivilegeGroup
表和Privileges
表是一個多對多的關係。我正考慮在應用程序啓動時從數據庫開始將PrivilegeGroup
表和Privilege
表的所有內容加載到內存中。我應該如何儲存這些信息?
我想將它們保存在一個容易查找的表單中。通常我們會通過GroupId
查找PrivilegeCode
。
哪種結構適合此目的?列表數組?字典?
我有一個PrivilegeGroup
表,Privileges
表和link
表,因爲PrivilegeGroup
表和Privileges
表是一個多對多的關係。我正考慮在應用程序啓動時從數據庫開始將PrivilegeGroup
表和Privilege
表的所有內容加載到內存中。我應該如何儲存這些信息?
我想將它們保存在一個容易查找的表單中。通常我們會通過GroupId
查找PrivilegeCode
。
哪種結構適合此目的?列表數組?字典?
如何
Dictionary<GroupIdType, HashSet<PrivilegeCodeType>>
這種方式可以通過GroupId的快速獲取特權HashSet的,和做快速測試對HashSet中,以檢查是否存在特權。
這聽起來像你希望能夠通過GroupId查找PrivelegeCode並且不需要任何其他數據?如果是這種情況,那麼你可以使用一個Dictionary<GroupIdDataType, PrivelegeCodeDataType>
這應該使查找容易。
至於在啓動應用程序時一次加載它們,我想這隻取決於應用程序運行時更改此數據是否對程序有任何影響,而無需重新啓動它。
一個GroupId將擁有多個PrivilegeCode。 – 5YrsLaterDBA 2010-05-07 20:48:16
是的,起初我沒有想到 - 多對多的關係 - 我會用Chris Taylor的答案(使用HashSet作爲字典值)。我會編輯我的反映相同的事情,但他應該獲得提供更好的答案的功勞。 – 2010-05-07 21:13:57
我建議你將數據保存在DataTable類的實例中。
不錯的建議。易於使用,易於過濾和執行查找..與字典相比,性能有所降低,但這可能可以忽略不計。 – David 2010-05-07 20:19:44
這是一個WinForms或Asp.Net應用程序嗎? (或者可能是控制檯應用程序或在Sharepoint中託管的工作流等)重要的是,因爲我們可能會引導您使用衆所周知的安全模型,而不是使用自己的本地安全模型。 (例如,標準的Asp.Net成員資格或活動目錄,而不是你看起來朝向的方向。)當涉及到安全模型時,自己滾動幾乎不是一個好主意。 – David 2010-05-07 19:37:24