2016-07-11 19 views
5

Sto provando a creare una nuova applicazione Web ASP.NET Core 1.0 e voglio che utilizzi le tabelle di autenticazione che ho già impostato. Queste tabelle sono stati originariamente creati da un'applicazione web ASP.NET 4.6 quello utilizzato Microsoft.ASPNet.Identity.EntityFramework 2.2.0Utilizzare un database Identity 2.0 per autenticare un'applicazione ASP.NET Core 1.0

Sembra che le cose devono cambiare in Microsoft.AspNetCore.Identity.EntityFrameworkCore perché la nuova applicazione Nucleo 1.0 genera questo errore durante il tentativo di accesso:

Un'operazione di database non è riuscita durante l'elaborazione della richiesta.

SqlException: nome colonna non valido "NormalizedUserName". Nome colonna non valido "ConcurrencyStamp". Nome colonna non valido "LockoutEnd". Nome colonna non valido "NormalizedEmail". Nome colonna non valido "NormalizedUserName".

Il project.json è appena estratto dalla scatola e si presenta così:

"dependencies": { 
"Microsoft.NETCore.App": { 
    "version": "1.0.0", 
    "type": "platform" 
}, 
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", 
"Microsoft.AspNetCore.Diagnostics": "1.0.0", 
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0", 
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 
"Microsoft.AspNetCore.Mvc": "1.0.0", 
"Microsoft.AspNetCore.Razor.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
}, 
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
"Microsoft.AspNetCore.StaticFiles": "1.0.0", 
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
"Microsoft.EntityFrameworkCore.SqlServer.Design": { 
    "version": "1.0.0", 
    "type": "build" 
}, 
"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
}, 
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
"Microsoft.Extensions.Configuration.Json": "1.0.0", 
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
"Microsoft.Extensions.Logging": "1.0.0", 
"Microsoft.Extensions.Logging.Console": "1.0.0", 
"Microsoft.Extensions.Logging.Debug": "1.0.0", 
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
}, 
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
} 

},

Inoltre, non ho cambiato il mio ApplicationDbContext, ma ho visto alcuni post su fare modifiche per risolvere questo problema in quella classe

script di migrazione

risposta

5

questa SQL mi ha fatto superare l'ostacolo di cui sopra:

Alter Table ASPNETROLES 
ADD 
ConcurrencyStamp varchar(255) null,    
NormalizedName varchar(255) null 

Drop Table AspNetUserTokens 

CREATE TABLE [AspNetUserTokens] (
    [UserId]  NVARCHAR (450) NOT NULL, 
    [LoginProvider] NVARCHAR (450) NOT NULL, 
    [Name]   NVARCHAR (450) NOT NULL, 
    [Value]   NVARCHAR (MAX) NULL, 
    CONSTRAINT [PK_AspNetUserTokens] 
PRIMARY KEY CLUSTERED ([UserId] ASC, [LoginProvider] ASC, [Name] ASC) 
) 

Alter Table AspNetUsers 
Add 
ConcurrencyStamp varchar(255) null, 
LockoutEnd DateTime null, 
NormalizedEmail varchar(255) null, 
NormalizedUserName varchar(255) null 

Drop Table [AspNetRoleClaims] 

CREATE TABLE [AspNetRoleClaims] (
    [Id]   INT   IDENTITY (1, 1) NOT NULL, 
    [ClaimType] NVARCHAR (MAX) NULL, 
    [ClaimValue] NVARCHAR (MAX) NULL, 
    [RoleId]  NVARCHAR (128) NOT NULL, 
    CONSTRAINT [PK_AspNetRoleClaims] 
PRIMARY KEY CLUSTERED ([Id] ASC), 
    CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] 
FOREIGN KEY ([RoleId]) 
    REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE 
) 


GO 
CREATE NONCLUSTERED INDEX [IX_AspNetRoleClaims_RoleId] 
    ON [AspNetRoleClaims]([RoleId] ASC) 

Alter Table AspNetUserLogins 
    Add ProviderDisplayName varchar(255) null 

Non c'è stato un sacco di indicazioni da Microsoft su come migrare il database ma questo ha risolto il problema sopra riportato per me.

Problemi correlati