una tabla net mvc mostrar modelo listar datos crear consultas consulta asp asp.net asp.net-mvc entity-framework asp.net-mvc-5 asp.net-identity

mvc - ¿Cómo crear tablas de identidad de ASP.Net dentro de la base de datos existente?



mostrar datos en asp.net sql server (3)

Estoy construyendo mi primera aplicación MVC 5 / Entity Framework. Usé el primer método de la base de datos para extraer mis datos de un servidor SQL existente. La base de datos SQL existente recibe sus datos de una aplicación .net de formularios web separada.

En el futuro, la nueva aplicación MVC y la aplicación de formularios web existente compartirán la base de datos.

Estoy utilizando Identity para crear cuentas de usuario dentro de la aplicación MVC. Entonces, en este punto, tengo 2 conexiones de datos en mi aplicación MVC. Uno para las cuentas de usuario y el otro para el servidor SQL existente.

¿Es esta la mejor manera de configurar el proyecto MVC? En el futuro, ¿podré acceder a la base de datos de usuarios desde la aplicación de formularios web?

Soy un novato y quiero asegurarme de que estoy configurando esto correctamente.


¿Se agregarán las tablas de usuario al servidor de SQL existente o esta base de datos de usuarios es una base de datos completamente separada?

No necesita dos bases de datos; puede crear tablas de identidad dentro de su base de datos existente.

ASP.Net Identity utiliza primero el código de Entity Framework . Por lo tanto, antes de ejecutar la aplicación por primera vez, desea actualizar la Cadena de conexión de la misma manera que la base de datos existente que normalmente está dentro de ApplicationDbContext .

Si ya tiene dos bases de datos independientes y desea combinarlas, desea utilizar herramientas como RedGate - Comparación de SQL y Comparación de datos.

La fusión de dos bases de datos está totalmente fuera de la pregunta original; por favor amablemente cree una pregunta separada si tiene una.


Con DB First, cambiar la cadena de conexión no hará que Identity 2.0 cree tablas en la DB.

CORRECCIÓN: originalmente tenía mis tablas de Identidad en la base de datos bajo un esquema de Identidad y cuando registré nuevos usuarios utilizando las siguientes, las nuevas tablas se escribieron en mi base de datos bajo el esquema dbo.

Primero debe crear un proyecto ficticio utilizando Code First, compilar y ejecutar el proyecto, acceder a la aplicación que se está ejecutando en su navegador web, registrar un usuario con un correo electrónico ficticio y una contraseña, esto hará que Entity FrameWork Code First (?) Para cree todas las tablas de Identity 2.0 DB en su base de datos ficticia. Luego querrá exportar las tablas ficticias a un script SQL e importarlas a la base de datos existente en la que desea usarlas. Debería haber 5 tablas: AspNetUserRoles, AspNetRoles, AspNetUsers, AspNetUserClaims y AspNetUserLogins.

Tengo un modelo de entidad ADO.Net (archivo .edmx) para mis modelos de base de datos principales y creé otro .edmx para los modelos de identidad (me llamé: IdentityDbEntities). Ahí es cuando debe cambiar la cadena de conexión de "DefaultConnection":

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

MUY IMPORTANTE: en su archivo Web.config, debe agregar una cadena de conexión adicional que utilizará anteriormente. Parece que (estoy usando un entorno de desarrollo de SQL Server, por lo que sus cadenas de conexión podrían cambiar):

<connectionStrings> <add name="IdentityDbEntitiesString" connectionString="Data Source=#MyServerAddress#; Initial Catalog=#DbName#; Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> <add name="IdentityDbEntities" connectionString="metadata=res://*/Models.IdentityModel.csdl| res://*/Models.IdentityModel.ssdl| res://*/Models.IdentityModel.msl; provider=System.Data.SqlClient; provider connection string=&quot; data source=#MyServerAddress#; initial catalog=#DbName#; integrated security=True;multipleactiveresultsets=True; application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> </connectionStrings>

Cualquier cosa dentro de # como # DbName # será personalizada para usted.


Ejecute este script SQL en la base de datos.

/****** 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