2012-05-31 48 views
1

我已經使用aspnet_regsql.exe爲角色,用戶和成員資格管理添加了一系列ASPNET數據庫表到我現有的SQL數據庫。關聯用戶和角色添加到具有現有用戶信息的ASPNET SQL數據庫

現有數據庫中已有一個用戶表,其中包含許多用戶的信息(ID,姓名,地址,郵政編碼等)。我想要將新的aspnet_Users表與現有的用戶表關聯起來。

是否有任何選項或選項可供推薦?由於

乾杯,亞歷克斯

回答

1

在ASPnet成員資格表中稱爲UserId的UserKey是標識用戶的GUID。您可以在UserKey列添加到您的Users表,然後開始做這樣危險的事情:

select * 
    from Users as U inner join 
    aspnet_Users as aU on aU.UserId = U.UserKey inner join 
    aspnet_Membership as aM on aM.UserId = aU.UserId 
    where U.UserId = @UserId 

沒有保證,明示或暗示的,是由微軟(或​​者我)如果你想直接在他們的桌子搗鼓約提供。

1

我們有一個項目前,我在幾年的工作有類似的情況。我們最終做的是將來自外部用戶表的相關用戶記錄的主鍵存儲爲ASPNET Membership modelProfile Property

的好處是,我們沒有改變任何有關外部數據庫的模式創建的關係,我們可以使用內置的ASPNET會員資料的對象很容易地從網絡中獲取相關的關鍵代碼 - 屁股。

此配置文件屬性的初始羣體通過我們專門爲使用ASPNET會員資料的對象任務寫了一個程序來完成,並通過了我們的會員設置和外部表存儲在用戶制定的電子郵件地址的事實變得更容易它是一次性任務的關鍵。

這種方法的缺點是,ASPNET成員資格概要表非常非規範化(或針對此事實施標準化)。它將配置文件屬性存儲爲xml數據或序列化二進制文件。在較早的版本中,它是使用存儲爲名稱的屬性名稱和包含所有值的單個值字符串的字符位置進行序列化的。這使得從外部表格的角度編寫查詢,連接等變得困難(如果不行的話)。

對我們來說,這並不是什麼大不了的事情,因爲我們只是在網站上根據具體情況處理外部用戶數據。因此,使用構建的對象從ASPNET配置文件中獲取密鑰然後在外部數據庫中查找它很容易。

如果你的項目會做很多的關係查詢或批處理那麼我可能會建議,而不是存儲在ASPNET用戶ID GUID爲您的外部用戶表foriegn鍵,或者如果郵件將要使用這些獨一無二的。

+0

再次感謝您的回答! – alextc

相關問題