我们的MVC 5应用程序正在使用Entity Framework和Code First。我们的设计需要用户数据,包括存储在一个表(Profile)中的散列密码,而用于登录的电子邮件地址将存储在另一个表(ProfileIdentifier)中。
我们希望尽可能多地利用Asp.Net身份。但是,我不确定如何自定义它以使用我们拥有的多表结构。
我可以创建一个SQL脚本来提供标准User对象的数据:
SELECT p.[ProfileId] AS Id -- GUID
, pid.ProfileIdentifierValue AS Email
, pid.ConfirmedDate AS EmailConfirmed
, LTRIM(RTRIM(ISNULL([Salutation] + ' ','') +
ISNULL([FirstName] + ' ','') +
ISNULL([MiddleName] + ' ','') +
ISNULL([LastName],'')))
AS Name
,[Password] AS PasswordHash
,[PasswordSalt]
,[SecurityQuestion]
,[SecurityAnswer]
, pid.ProfileIdentifierValue AS UserName
FROM [dbo].[Profile] AS p
INNER JOIN dbo.ProfileIdentifier AS pid
ON p.ProfileId = pid.ProfileId
WHERE pid.ProfileIdentifierTypeId = 1
但是,在我的C#代码中,我如何将IdentityUser对象映射到此。我需要创建自定义用户对象吗?自定义用户管理器和用户存储?我已经玩了很多代码,并在线阅读了几篇文章,但似乎并不适合所有的部分。我不是在问正确的问题吗?请帮忙!