【发布时间】:2014-06-01 04:03:05
【问题描述】:
我正在尝试实现一个自定义 UserStore,它将 ASP.NET 身份映射到现有的(而且相当复杂的)数据库模型。数据库有一个我想用来存储用户数据的现有表“联系人”。该表有一个 int identity(1,1) 主键。所以我创建了一个名为“ContactUser”的类来实现 IUser 和一个“ContactUserStore”来实现 IUserStore。基本登录现在可以使用了。
但是,我无法让新用户注册工作。当我尝试这样做时:
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
它报错并抱怨找不到用户 ID。
这是因为 AspNet Identity 在调用 ContactUserStore.CreateAsync(ContactUser user) 时不知道在数据库中创建的联系人记录的身份密钥。该方法成功完成(创建联系人记录),但随后它使用 userId = 0 调用 ContactUserStore.FindByIdAsync(int userId),这不是它刚刚创建的用户...
有没有办法传回在 CreateAsync() 中在数据库中创建的 userId 的 @@identity 值?还是强制它在创建后使用 FindByName() 或 FindByEmail() 方法来选择用户?
【问题讨论】:
标签: asp.net-identity asp.net-identity-2