2012-01-23 84 views
2

數據架構的最佳實踐,我上的MVC 3應用程序中使用.NET成員的工作和使用實體框架進行數據訪問。我在使用這些技術方面相當新穎。當我試圖將應用程序數據與特定用戶關聯時,我一直在進入hangups。涉及的.Net成員資格提供

所以我們可以說你有一個與.NET成員資格提供和創建應特別依賴於用戶的特定應用對象是用戶創建一個用戶。每個用戶將訪問他們自己的這些對象的列表。我很好奇最佳做法是什麼。我需要在這些應用程序對象上創建一個外鍵,以便我知道它們屬於某個用戶。我只是不確定應該有什麼價值。

而且,假設你有一個管理員用戶可以看到所有爲每個用戶這些應用對象,他們屬於哪個用戶?使用實體框架我希望能夠運行這樣的查詢。但是你通常沒有代表會員對象的實體。

希望我說明我的困惑不夠好。如果我不清楚,請告訴我。任何幫助任何人都可以對此表示讚賞。

感謝

回答

0

每當我開發出超越什麼.NET會員提供商提供了我的用戶,用戶配置文件和角色的應用程序數據庫中創建自己的表的應用程序。這將使您在設計用戶想要維護的信息時具有靈活性,然後您可以使用EF來訪問該信息。你使用什麼EF方法;它是代碼優先,模型優先還是數據庫優先?如果您使用的是代碼優先,那麼EF將通過在DB中創建類型爲int的對象ID來創建關係,這些對象ID設置爲「Is Identity」並自增。您可以通過使用性能屬性上的物體像這樣重寫此:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid ID { get; set; } 

使用廉政局提供更高效的索引,但如果您使用複製或分佈式數據庫的GUID是有益的。如果您使用的是模型優先或數據庫優先的方法,則可以使用任一選項來維護對象之間的關係。通過使用對象ID的概念而不是使用其他主鍵,用戶可以在不改變表關係的情況下更改用戶信息。例如,如果用戶表的主鍵是用戶名,並且用戶決定更改他們的用戶名,那麼您將不得不更新所有外鍵。

通過移動會員信息到你的應用程序,你會在定義會員信息和其它應用的實體,這反過來將允許你執行你正在尋找的查詢之間的關係有更多的靈活性。

相關問題