C# 如何通过迁移手动创建asp.net标识表?
我希望asp.net标识表存在于我的数据库中,并且在我实际运行mvc应用程序并创建用户之前生成相应的代码优先模型,这样我就可以根据这些类编写一些逻辑代码。有没有一种方法可以通过迁移手动创建这些表/类?如果要在数据库中手动添加,必须使用结构化查询语言编写;) 刚刚粘贴到数据库编辑器中的代码应该能够为Identity创建所有默认表C# 如何通过迁移手动创建asp.net标识表?,c#,asp.net-mvc,entity-framework,entity-framework-migrations,C#,Asp.net Mvc,Entity Framework,Entity Framework Migrations,我希望asp.net标识表存在于我的数据库中,并且在我实际运行mvc应用程序并创建用户之前生成相应的代码优先模型,这样我就可以根据这些类编写一些逻辑代码。有没有一种方法可以通过迁移手动创建这些表/类?如果要在数据库中手动添加,必须使用结构化查询语言编写;) 刚刚粘贴到数据库编辑器中的代码应该能够为Identity创建所有默认表 话虽如此,如果你不介意我问你,你想加入什么样的逻辑?迪伦·科里沃的答案很有效。但是,如果您试图使用这些表登录。。userManager.FindAsync将导致500错误
话虽如此,如果你不介意我问你,你想加入什么样的逻辑?迪伦·科里沃的答案很有效。但是,如果您试图使用这些表登录。。userManager.FindAsync将导致500错误(无效用户ID)。AspNetUserClaims中的用户Id应该是UserId。我正准备编写一个linq语句来查询AspNetUsers表中的电子邮件,但意识到我需要使用email属性扩展该表,然后首先生成模型。这是我第一次尝试新的成员制,我不知道表模式应该如何连接/映射。关于这个新会员制的文件很少。啊,好的。我同意,到目前为止,关于它的文档资料很少。。。希望不久会有更多的作品问世。具有讽刺意味的是,我只是使用identity将电子邮件添加到我的项目中。有一篇关于如何做的非常好的文章。应该告诉您有关如何设置电子邮件确认的所有信息。或者至少设置如何将电子邮件作为一个可行的列添加到您的注册过程中,您是否实现了此解决方案?对你有用吗?如果是的话,请接受作为答案。@user1206480,您能发布您的解决方案,并将其标记为答案,以便我们都能从中学习吗?谢谢。@DylanCorriveau我也有同样的外键错误。在主键创建解决错误后,将外键创建移动到。谢谢您可能还想签出此项目:(项目模板),它可以帮助您使用手动创建和自定义ASP.NET标识数据库。这看起来非常有趣!我试试看。
CREATE TABLE [dbo].[__MigrationHistory] (
[MigrationId] NVARCHAR (150) NOT NULL,
[ContextKey] NVARCHAR (300) NOT NULL,
[Model] VARBINARY (MAX) NOT NULL,
[ProductVersion] NVARCHAR (32) NOT NULL
);
GO
CREATE TABLE [dbo].[AspNetRoles] (
[Id] NVARCHAR (128) NOT NULL,
[Name] NVARCHAR (MAX) NOT NULL
);
GO
CREATE TABLE [dbo].[AspNetUserClaims] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[ClaimType] NVARCHAR (MAX) NULL,
[ClaimValue] NVARCHAR (MAX) NULL,
[User_Id] NVARCHAR (128) NOT NULL
);
GO
CREATE TABLE [dbo].[AspNetUserLogins] (
[UserId] NVARCHAR (128) NOT NULL,
[LoginProvider] NVARCHAR (128) NOT NULL,
[ProviderKey] NVARCHAR (128) NOT NULL
);
GO
CREATE TABLE [dbo].[AspNetUserRoles] (
[UserId] NVARCHAR (128) NOT NULL,
[RoleId] NVARCHAR (128) NOT NULL
);
GO
CREATE TABLE [dbo].[AspNetUsers] (
[Id] NVARCHAR (128) NOT NULL,
[UserName] NVARCHAR (MAX) NULL,
[PasswordHash] NVARCHAR (MAX) NULL,
[SecurityStamp] NVARCHAR (MAX) NULL,
[Discriminator] NVARCHAR (128) NOT NULL
);
GO
ALTER TABLE [dbo].[__MigrationHistory]
ADD CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY CLUSTERED ([MigrationId] ASC, [ContextKey] ASC);
GO
ALTER TABLE [dbo].[AspNetRoles]
ADD CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED ([Id] ASC);
GO
ALTER TABLE [dbo].[AspNetUserClaims]
ADD CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY CLUSTERED ([Id] ASC);
GO
ALTER TABLE [dbo].[AspNetUserLogins]
ADD CONSTRAINT [PK_dbo.AspNetUserLogins] PRIMARY KEY CLUSTERED ([UserId] ASC, [LoginProvider] ASC, [ProviderKey] ASC);
GO
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [PK_dbo.AspNetUserRoles] PRIMARY KEY CLUSTERED ([UserId] ASC, [RoleId] ASC);
GO
ALTER TABLE [dbo].[AspNetUsers]
ADD CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_User_Id]
ON [dbo].[AspNetUserClaims]([User_Id] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_UserId]
ON [dbo].[AspNetUserLogins]([UserId] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_RoleId]
ON [dbo].[AspNetUserRoles]([RoleId] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_UserId]
ON [dbo].[AspNetUserRoles]([UserId] ASC);
GO
ALTER TABLE [dbo].[AspNetUserClaims]
ADD CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE;
GO
ALTER TABLE [dbo].[AspNetUserLogins]
ADD CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE;
GO
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE;
GO
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE;
GO