>我正在尝试在我的网站中实现Microsoft的身份框架(IF(。我设计数据库的方式是框架可以识别结构并绕过它。但是当我注册一封电子邮件时,尽管它确实正确接收了数据,但 IF 哈希器不起作用。有一个错误,暗示应用程序用户不在上下文中,但控制器接收数据,在调试时我可以看到电子邮件和密码。但在这条线上
var result = await UserManager.CreateAsync(user, model.Password);
似乎在我的模型中寻找它不存在的值。
因此,我相信问题摆在桌面上 AspNetUsers,我错过了隐藏的属性吗?
CREATE TABLE [dbo].[AspNetUsers] (
[Id] NVARCHAR (128) NOT NULL,
[Email] NVARCHAR (256) NULL,
[EmailConfirmed] BIT NOT NULL,
[PasswordHash] NVARCHAR (MAX) NULL,
[Password] [nvarchar](500) NULL,
[SecurityStamp] NVARCHAR (MAX) NULL,
[PhoneNumber] NVARCHAR (MAX) NULL,
[PhoneNumberConfirmed] BIT NOT NULL,
[TwoFactorEnabled] BIT NOT NULL,
[LockoutEndDateUtc] DATETIME NULL,
[LockoutEnabled] BIT NOT NULL,
[AccessFailedCount] INT NOT NULL,
[UserName] NVARCHAR (256) NOT NULL,
[Login] [nvarchar](50) NOT NULL,
[CreationDate] [datetime] NULL,
[ApprovalDate] [datetime] NULL,
[LastLoginDate] [datetime] NULL,
[IsLocked] [bit] NOT NULL,
[PasswordQuestion] [nvarchar](max) NULL,
[PasswordAnswer] [nvarchar](max) NULL,
[ActivationToken] [nvarchar](200) NULL,
CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [UX_User_EMail] UNIQUE NONCLUSTERED
(
[EMail] ASC
),
CONSTRAINT [UX_User_Login] UNIQUE NONCLUSTERED
(
[Login] ASC
)
);
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_IsLocked] DEFAULT ((0)) FOR [IsLocked]
GO
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_EmailConfirmed] DEFAULT ((0)) FOR [EmailConfirmed]
GO
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_PhoneNumberConfirmed] DEFAULT ((0)) FOR [PhoneNumberConfirmed]
GO
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_TwoFactorEnabled] DEFAULT ((0)) FOR [TwoFactorEnabled]
GO
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_LockoutEnabled] DEFAULT ((0)) FOR [LockoutEnabled]
GO
ALTER TABLE [dbo].[AspNetUsers] ADD CONSTRAINT [DF_User_AccessFailCount] DEFAULT ((0)) FOR [AccessFailedCount]
GO
GO
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
ON [dbo].[AspNetUsers]([UserName] ASC);
我见过类似的问题,并且有提示有一个名为"鉴别器"的属性,但没有描述它是什么以及我应该如何声明它。 谢谢!
由于某种原因,它不适用于纯 sql 查询。 您需要执行以下操作才能使其正常工作。 编辑 web.config 默认连接字符串以指向自定义数据库(确保没有 AspNet 表( 喜欢这个
注意 我正在使用"数据源=."来引用我的本地数据库服务器。 完成此构建并运行以注册新用户后。这将完美地创建标识框架数据库结构及其对自定义数据库的所有要求。 在此之后,例如,如果您需要在另一个表上引用 AspNetUsers 表。只需修改您的自定义数据库即可。
标识框架使用自己的上下文。因此,如果您使用的是数据库优先方法,则应添加另一个上下文来运行您的 Db。这个问题可能有更好的解决方案(因为你不能通过只指示数据库连接字符串来拖动模型(但这是对我有用的! 祝你好运!