簡體   English   中英

將復雜數據連接到ASP.Net成員資格表的最佳數據庫設計方法

[英]Best database design approach to join complex data to ASP.Net Membership tables

我正在尋找使用經過稍微修改的ASP.Net成員資格提供程序來處理網站中標准用戶帳戶的創建/身份驗證/等操作。 我們需要遷移大量遺留數據,以便與現有用戶的已保存信息(例如訂單歷史記錄,願望清單等)保持連續性。 [注意:我們還是必須遷移,所以這不是我們遷移數據的原因]

我想知道將這些附加數據加入asp.net成員表的明智方法。 我可以在用戶表上使用兩個唯一鍵-UserId或email-我們將使用它們作為用戶名的代理。

我的問題是,在表的其他位置用於存儲訂單,願望清單等的更好的訪問模式(以及外鍵)是什么?

在HttpContext中,可以使用一個User對象,其中包含我們的電子郵件地址“ Username”,但沒有提供userId的Guid。

我看到3個選項:

  1. 我想簡單地使用uniqueidentifier UserId來提高訪問冗長的varchar電子郵件地址的效率,但是,如果沒有額外的數據庫調用來通過電子郵件/登錄名獲取它,它似乎不容易使用。 有沒有什么方法可以獲取UserId,以便可以將其作為不同表的外鍵?
  2. 我可以傳入電子郵件地址(用戶名)作為輸入參數,加入userId(其中電子郵件地址= @emailAddress),並使用userId作為其他表上的外鍵。

不可行

  1. 我可以將用戶名/電子郵件地址存儲在所有其他表上作為外鍵-這將是不幸的非規范化

從數據庫角度還是從應用程序效率角度,對最佳方法有何想法?

您可以獲取UserId:

MembershipUser myObject = Membership.GetUser();
        string UserID = myObject.ProviderUserKey.ToString();

也許(請檢查一下)

  string userId = Membership.GetUser(User.Identity.Name).ProviderUserKey.ToString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM