简体   繁体   English

如何首先使用代码在已创建的数据库中创建ASP.net身份表?

[英]How to create ASP.net identity tables in an already created database using code first?

My application has been in development for about a month. 我的应用程序已经开发了大约一个月。 I now decided to use ASP.NET Identity. 我现在决定使用ASP.NET Identity。 I already have the view models for identity but need to create the tables. 我已经拥有了身份的视图模型,但需要创建表。 I was thinking and I am not exactly sure why I do not have the tables already if I have the view models?? 我在想,如果我有视图模型,我不确定为什么我没有表? I have drop create on in the initializer with my own custom context, I just need to know how to get EF to build the included Identity tables for users and roles? 我使用自己的自定义上下文在初始化程序中删除了create,我只需要知道如何让EF为用户和角色构建包含的Identity表? I looked around and none of the posted answers seem to be what I need? 我环顾四周,所发布的答案似乎都不是我所需要的?

Consider Migrations 考虑迁移

If applicable, you need to consider building a migration , which will allow you to generate (and potentially execute) the necessary scripts to create the appropriate tables or changes within your database. 如果适用,您需要考虑构建迁移 ,这将允许您生成(并可能执行)必要的脚本,以在数据库中创建适当的表或更改。

By default, you should have some type of ApplicationDbContext class that looks like the following which will be used to define your "security-related" database: 默认情况下,您应该具有某种类型的ApplicationDbContext类,其类似于以下内容,用于定义“安全相关”数据库:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", false)
    {
    }

    // Other code omitted for brevity
}

You'll then just need to run the Enable-Migrations command in Package Manager Console: 然后,您只需要在程序包管理器控制台中运行Enable-Migrations命令:

Enable-Migrations

This should generate a Migrations folder within your application that contains various configuration files that control how migrations are preformed as well as an InitialCreate migration. 这应该在您的应用程序中生成一个Migrations文件夹,其中包含控制迁移执行方式的各种配置文件以及InitialCreate迁移。 This may only be present if you previously had some Code-First related code within your application, if not, don't worry about it. 如果您之前在应用程序中有一些与Code-First相关的代码,则可能只会出现这种情况,如果没有,请不要担心。 You can then try running the Update-Database command, which should execute any migrations (including an initial one) against your database: 然后,您可以尝试运行Update-Database命令,该命令应对您的数据库执行任何迁移(包括初始迁移):

Update-Database

Once your database has been updated, you can continue to make changes to your model and simply create and execute new migrations through the Add-Migration command and the previous Update-Database command: 更新数据库后,您可以继续对模型进行更改,只需通过Add-Migration命令和以前的Update-Database命令创建和执行新的迁移:

Add-Migration "AddedAnotherPropertyToFoo"
Update-Database

Run this SQL Script on your database and get it done. 在您的数据库上运行此SQL脚本并完成它。

/****** Object:  Table [dbo].[AspNetRoles]    Script Date: 15-Mar-17 10:27:06 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[AspNetRoles](

    [Id] [nvarchar](128) NOT NULL,

    [Name] [nvarchar](256) NOT NULL,

CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED

(

    [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]



GO

/****** Object:  Table [dbo].[AspNetUserClaims]    Script Date: 15-Mar-17 10:27:06 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[AspNetUserClaims](

    [Id] [int] IDENTITY(1,1) NOT NULL,

    [UserId] [nvarchar](128) NOT NULL,

    [ClaimType] [nvarchar](max) NULL,

    [ClaimValue] [nvarchar](max) NULL,

CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY CLUSTERED

(

    [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]



GO

/****** Object:  Table [dbo].[AspNetUserLogins]    Script Date: 15-Mar-17 10:27:06 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[AspNetUserLogins](

    [LoginProvider] [nvarchar](128) NOT NULL,

    [ProviderKey] [nvarchar](128) NOT NULL,

    [UserId] [nvarchar](128) NOT NULL,

CONSTRAINT [PK_dbo.AspNetUserLogins] PRIMARY KEY CLUSTERED

(

    [LoginProvider] ASC,

    [ProviderKey] ASC,

    [UserId] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]



GO

/****** Object:  Table [dbo].[AspNetUserRoles]    Script Date: 15-Mar-17 10:27:06 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

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

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]



GO

/****** Object:  Table [dbo].[AspNetUsers]    Script Date: 15-Mar-17 10:27:06 PM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[AspNetUsers](

    [Id] [nvarchar](128) NOT NULL,

    [Email] [nvarchar](256) NULL,

    [EmailConfirmed] [bit] NOT NULL,

    [PasswordHash] [nvarchar](max) 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,

CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED

(

    [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]



GO

ALTER TABLE [dbo].[AspNetUserClaims]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])

REFERENCES [dbo].[AspNetUsers] ([Id])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId]

GO

ALTER TABLE [dbo].[AspNetUserLogins]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])

REFERENCES [dbo].[AspNetUsers] ([Id])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[AspNetUserLogins] CHECK CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId]

GO

ALTER TABLE [dbo].[AspNetUserRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY([RoleId])

REFERENCES [dbo].[AspNetRoles] ([Id])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId]

GO

ALTER TABLE [dbo].[AspNetUserRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])

REFERENCES [dbo].[AspNetUsers] ([Id])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId]

GO

So after a bit of reading a fiddling i got the answer. 所以经过一番阅读后,我得到了答案。 All I had to do was finally run the register method from ASP.NET Identity and all the tables were created. 我所要做的就是最终从ASP.NET Identity运行register方法并创建所有表。

Perhaps just run the ASP.NET Identity Sql Scripts against the database if you do not want to Enable Migrations: 如果您不想启用迁移,可能只是针对数据库运行ASP.NET Identity Sql Scripts:

https://www.codeproject.com/Tips/677279/SQL-script-for-creating-an-ASP-NET-Identity-Databa https://www.codeproject.com/Tips/677279/SQL-script-for-creating-an-ASP-NET-Identity-Databa

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用ASP.NET Identity 2创建第一个root用户? - How to create the first root user using ASP.NET Identity 2? ASP.NET Identity 3.0-如何在MVC应用程序中创建带有用户表的数据库? - ASP.NET Identity 3.0 - how is the database with user tables created in an MVC application? 如何使用首先通过代码创建的数据库中的数据填充谷歌图表 - ASP.Net MVC - How to populate google charts using data from database created via code first - ASP.Net MVC 未创建 asp.net 身份表 - asp.net Identity tables not get created Blazor ASP.NET 托管身份验证,使用现有数据库和身份表 - Blazor ASP.NET Hosted Identity Authentication with already existing database with Identity tables Asp.net MVC Identity无法使用Database approch创建表 - Asp.net MVC Identity unable create tables using Database approch 如何从asp.net身份创建的数据库中读取数据 - how to read data from database created by asp.net identity 使用 Asp.Net 身份数据库第一种方法 - Using Asp.Net Identity DataBase first approach 如何使用“代码优先实体框架”在ASP.NET MVC 4中创建数据库并将其连接到数据库? - How to create a database and connect to it in ASP.NET MVC 4 by using Code First Entity Framework? 如何在ASP.NET MVC Core中使用数据库优先方法在现有数据库中实现Asp.net身份 - How to implement Asp.net identity with existing database using database first approach in asp.net mvc core
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM