我發現了另一種解決方案,如果您的用戶/身份驗證表與dbo(或任何數據庫用戶的默認架構)不同,那就是使用視圖。
在我的數據庫中,我的用戶/認證表被限定爲「安全」模式。我也有一個Person模式,在Person模式下生活。我在Person表中只存儲名字,姓氏。
我創建的拉動所有的表一起進行驗證和我返回以下字段的看法:
用戶ID,用戶名,PERSONID,名字,姓氏,AuthenticationType,LastLoginDate,IsLockedOut
在我的應用程序,我可以通過許多不同的方式對用戶進行身份驗證:表單,Windows,Facebook,Twitter等。UserId,UserName與不同的身份驗證類型相關。
這裏是在ASP.Net MVC我的用戶配置類:
[Table("__vwRegisteredUser")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public String UserName { get; set; }
public int PersonId { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String AuthenticationTypeName { get; set; }
public Boolean IsLockedOut { get; set; }
public DateTime LastLoginDate { get; set; }
public int Id
{
get
{
return PersonId;
}
}
public String Name
{
get
{
return String.Format("{0} {1}", FirstName, LastName);
}
}
}
通知我使用的表屬性的看法。我還將PersonId作爲Id屬性返回,並將FirstName和LastName連接爲Name屬性。用戶名是從我的認證類型(Windows用戶名,電子郵件地址,如果我使用表單身份驗證,或任何Facebook或Twitter返回的)返回的值。因此,我的Security.Authentication表中沒有UserName的一致性。
初始化數據庫連接仍然需要一張表,以便SimpleMembership生成成員資格表。有可能有一個自定義會員表的方法,但我還沒有想到。
看看這個主題: –
2013-03-27 06:13:01