迁移用户ASP.NET网页表到MVC 6



信息
我想"升级"我的ASP。NET网页项目转换为ASP。NET MVC项目刚刚开始,它只有几页,对学习很有好处。

问题
当前项目容纳了一些用户进行身份验证ASP。NET在我的数据库中制作了几个表:

  • 角色
  • 配置文件
  • 用户

但当我使用MVC项目时,我看到它为身份验证制作了不同的表:

  • AspNetUserLogins
  • AspNetUser角色
  • AspNetUser

问题
我如何迁移我的用户,或者我如何告诉ASP.net使用旧表?

问候您可能想从MVC-Core中的数据库优先方法开始,但它与您迄今为止看到的有点不同,让我解释一下添加数据库的步骤:

  • 安装实体框架:

运行Install-Package Microsoft.EntityFrameworkCore.SqlServer

为了从现有数据库中启用反向工程,我们还需要安装几个其他软件包。

  1. 运行安装包Microsoft.EntityFrameworkCore.Tools –Pre
  2. 运行安装包Microsoft.EntityFrameworkCore.Design
  3. 运行安装包Microsoft.EntityFrameworkCore.SqlServer.Design

现在对您的模型进行逆向工程:

  • 运行以下命令从现有数据库如果您收到一个说明术语的错误"Scaffold DbContext"未被识别为cmdlet的名称,则关闭并重新打开Visual Studio

Scaffold-DbContext "Server=(localdb)mssqllocaldb;Database=DataBaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

逆向工程过程基于现有数据库的模式创建了实体类和派生上下文。实体类是简单的C#对象,表示将要查询和保存的数据。现在您可以创建一个DbContext类并开始使用您的数据库,到目前为止,关于数据库的问题已经结束,现在我建议您阅读关于Identity In Asp的内容。NET核心。

由于这个博客,我看到了这个网站

并根据我的需求进行了编辑:

/****** Object: Table [dbo].[AspNetRoles] Script Date: 11/14/2013 1:56:03 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.AspNetUserRoles', 'U') IS NOT NULL
DROP TABLE [dbo].[AspNetUserRoles]
GO
IF OBJECT_ID('dbo.AspNetUserLogins', 'U') IS NOT NULL
DROP TABLE [dbo].[AspNetUserLogins]
GO
IF OBJECT_ID('dbo.AspNetUserClaims', 'U') IS NOT NULL
DROP TABLE [dbo].[AspNetUserClaims]
GO
IF OBJECT_ID('dbo.AspNetRoles', 'U') IS NOT NULL
DROP TABLE [dbo].[AspNetRoles]
GO
IF OBJECT_ID('dbo.AspNetUsers', 'U') IS NOT NULL
DROP TABLE [dbo].[AspNetUsers]
GO
CREATE TABLE [dbo].[AspNetUsers] (
[AccessFailedCount]    INT            NOT NULL,
[Email]                NVARCHAR (MAX) NULL,
[EmailConfirmed]       BIT            DEFAULT ((0)) NULL,
[Id]                   NVARCHAR (128) NOT NULL,
[LockoutEnabled]       BIT            DEFAULT ((0)) NULL,
[LockoutEndDateUtc]           DATETIME2 (7)  NULL,
[PasswordHash]         NVARCHAR (MAX) NULL,
[PhoneNumber]          NVARCHAR (MAX) NULL,
[PhoneNumberConfirmed] BIT            DEFAULT ((0)) NULL,
[SecurityStamp]        NVARCHAR (MAX) NULL,
[TwoFactorEnabled]     BIT            DEFAULT ((0)) NULL,
[UserName]             NVARCHAR (MAX) NULL,
[CreateDate]                              DATETIME       NULL,
[ConfirmationToken]                       NVARCHAR (128) NULL,
[IsConfirmed]                             BIT            DEFAULT ((0)) NULL,
[LastPasswordFailureDate]                 DATETIME       NULL,
[PasswordFailuresSinceLastSuccess]        INT            DEFAULT ((0)) NULL,
[PasswordChangedDate]                     DATETIME       NULL,
[PasswordVerificationToken]               NVARCHAR (128) NULL,
[PasswordVerificationTokenExpirationDate] DATETIME       NULL,
CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE TABLE [dbo].[AspNetRoles] (
[Id]   NVARCHAR (128) NOT NULL,
[Name] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE TABLE [dbo].[AspNetUserRoles] (
[UserId] NVARCHAR (128) NOT NULL,
[RoleId] NVARCHAR (128) NOT NULL,
CONSTRAINT [PK_dbo.AspNetUserRoles] PRIMARY KEY CLUSTERED ([UserId] ASC, [RoleId] ASC),
CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);
GO
CREATE NONCLUSTERED INDEX [IX_RoleId]
ON [dbo].[AspNetUserRoles]([RoleId] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_UserId]
ON [dbo].[AspNetUserRoles]([UserId] ASC);
GO
CREATE TABLE [dbo].[AspNetUserLogins] (
[UserId]        NVARCHAR (128) NOT NULL,
[LoginProvider] NVARCHAR (128) NOT NULL,
[ProviderKey]   NVARCHAR (128) NOT NULL,
CONSTRAINT [PK_dbo.AspNetUserLogins] PRIMARY KEY CLUSTERED ([UserId] ASC, [LoginProvider] ASC, [ProviderKey] ASC),
CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);
GO
CREATE NONCLUSTERED INDEX [IX_UserId]
ON [dbo].[AspNetUserLogins]([UserId] ASC);
GO
CREATE TABLE [dbo].[AspNetUserClaims] (
[Id]         INT            IDENTITY (1, 1) NOT NULL,
[ClaimType]  NVARCHAR (MAX) NULL,
[ClaimValue] NVARCHAR (MAX) NULL,
[UserId]    NVARCHAR (128) NOT NULL,
CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_User_Id] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);
GO
CREATE NONCLUSTERED INDEX [IX_User_Id]
ON [dbo].[AspNetUserClaims]([UserId] ASC);
GO
INSERT INTO AspNetUsers(Id, UserName, PasswordHash, SecurityStamp,
CreateDate, ConfirmationToken, IsConfirmed, LastPasswordFailureDate, PasswordFailuresSinceLastSuccess,
PasswordChangedDate, PasswordVerificationToken, PasswordVerificationTokenExpirationDate,AccessFailedCount,LockoutEndDateUtc)
SELECT Users.UserId, Users.UserName, Memberships.Password, 
Memberships.PasswordSalt,  CreateDate, 
null, 1, '1/1/1977', 0,
'1/1/2017', null, '1/1/2100',0,'1/1/1977'
FROM Users
LEFT OUTER JOIN Memberships ON Users.UserId = Memberships.UserId
GO
INSERT INTO AspNetRoles(Id, Name)
SELECT RoleId, RoleName
FROM Roles
GO
INSERT INTO AspNetUserRoles(UserId, RoleId)
SELECT UserId, RoleId
FROM UsersInRoles
GO
--INSERT INTO AspNetUserLogins(UserId, LoginProvider, ProviderKey)
--SELECT UserId, Provider, ProviderUserId
--FROM Memberships
--GO

最新更新