Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql错误UserID,登录Asp.Net MVC时RoleId列名无效_Sql_Asp.net Mvc_Asp.net Identity 2 - Fatal编程技术网

Sql错误UserID,登录Asp.Net MVC时RoleId列名无效

Sql错误UserID,登录Asp.Net MVC时RoleId列名无效,sql,asp.net-mvc,asp.net-identity-2,Sql,Asp.net Mvc,Asp.net Identity 2,我有一个使用entity framework 6的web应用程序。身份2。MVC4。 我将尝试解释导致此错误的原因: 异常详细信息:System.Data.SqlClient.SqlException:列名“UserId”无效。 列名“UserId”无效。 列名“RoleId”无效 Account Controller.cs中的源错误:/ { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCook

我有一个使用entity framework 6的web应用程序。身份2。MVC4。 我将尝试解释导致此错误的原因:

异常详细信息:System.Data.SqlClient.SqlException:列名“UserId”无效。 列名“UserId”无效。 列名“RoleId”无效

Account Controller.cs中的源错误:/

  {
      AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
   }
首先,我在实体设计器中添加了AspNetUser表和自定义表“CustomerTicketInfo”之间的关系。我从模型中更新了数据库,并运行了自动生成的Sql:

-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, 2012 and Azure
-- --------------------------------------------------
-- Date Created: 08/13/2014 10:15:49
-- Generated from EDMX file: C:\Projects\DevTeam\Logistics Mobile MVC\LMSMobile\LMSMobile\Models\LogisticsManagementModel.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [LTGLogisticsManagement];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[FK_dbo_AspNetUserClaims_dbo_AspNetUsers_User_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetUserClaims] DROP CONSTRAINT [FK_dbo_AspNetUserClaims_dbo_AspNetUsers_User_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_dbo_AspNetUserLogins_dbo_AspNetUsers_UserId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetUserLogins] DROP CONSTRAINT [FK_dbo_AspNetUserLogins_dbo_AspNetUsers_UserId];
GO
IF OBJECT_ID(N'[dbo].[FK_AspNetUserRoles_AspNetRole]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetUserRoles] DROP CONSTRAINT [FK_AspNetUserRoles_AspNetRole];
GO
IF OBJECT_ID(N'[dbo].[FK_AspNetUserRoles_AspNetUser]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetUserRoles] DROP CONSTRAINT [FK_AspNetUserRoles_AspNetUser];
GO
IF OBJECT_ID(N'[dbo].[FK_AspNetRoles_AspNetRoles]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetRoles] DROP CONSTRAINT [FK_AspNetRoles_AspNetRoles];
GO
IF OBJECT_ID(N'[dbo].[FK_AspNetUsers_AspNetUsers]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[AspNetUsers] DROP CONSTRAINT [FK_AspNetUsers_AspNetUsers];
GO
IF OBJECT_ID(N'[dbo].[FK_AspNetUserCustomerTicketInfo]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[CustomerTicketInfoes] DROP CONSTRAINT [FK_AspNetUserCustomerTicketInfo];
GO

-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[CustomerTicketInfoes]', 'U') IS NOT NULL
    DROP TABLE [dbo].[CustomerTicketInfoes];
GO
IF OBJECT_ID(N'[dbo].[AspNetRoles]', 'U') IS NOT NULL
    DROP TABLE [dbo].[AspNetRoles];
GO
IF OBJECT_ID(N'[dbo].[AspNetUserClaims]', 'U') IS NOT NULL
    DROP TABLE [dbo].[AspNetUserClaims];
GO
IF OBJECT_ID(N'[dbo].[AspNetUserLogins]', 'U') IS NOT NULL
    DROP TABLE [dbo].[AspNetUserLogins];
GO
IF OBJECT_ID(N'[dbo].[AspNetUsers]', 'U') IS NOT NULL
    DROP TABLE [dbo].[AspNetUsers];
GO
IF OBJECT_ID(N'[dbo].[AspNetUserRoles]', 'U') IS NOT NULL
    DROP TABLE [dbo].[AspNetUserRoles];
GO

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

-- Creating table 'CustomerTicketInfoes'
CREATE TABLE [dbo].[CustomerTicketInfoes] (
    [Oid] uniqueidentifier  NOT NULL,
    [Commodity] nvarchar(100)  NULL,
    [ContractLocale] nvarchar(100)  NULL,
    [ArrivalNumber] nvarchar(100)  NULL,
    [PickUpNumber] nvarchar(100)  NULL,
    [OriginSignature] nvarchar(100)  NULL,
    [DestinationSignature] nvarchar(100)  NULL,
    [OptimisticLockField] int  NULL,
    [GCRecord] int  NULL,
    [Trucker] nvarchar(50)  NULL,
    [AspNetUserId] varchar(50)  NOT NULL
);
GO

-- Creating table 'AspNetRoles'
CREATE TABLE [dbo].[AspNetRoles] (
    [Id] varchar(50)  NOT NULL,
    [Name] nvarchar(max)  NOT NULL
);
GO

-- Creating table 'AspNetUserClaims'
CREATE TABLE [dbo].[AspNetUserClaims] (
    [Id] varchar(50)  NOT NULL,
    [ClaimType] nvarchar(max)  NULL,
    [ClaimValue] nvarchar(max)  NULL,
    [User_Id] varchar(50)  NOT NULL
);
GO

-- Creating table 'AspNetUserLogins'
CREATE TABLE [dbo].[AspNetUserLogins] (
    [UserId] varchar(50)  NOT NULL,
    [LoginProvider] nvarchar(128)  NOT NULL,
    [ProviderKey] nvarchar(128)  NOT NULL
);
GO

-- Creating table 'AspNetUsers'
CREATE TABLE [dbo].[AspNetUsers] (
    [Id] varchar(50)  NOT NULL,
    [UserName] nvarchar(max)  NULL,
    [PasswordHash] nvarchar(max)  NULL,
    [SecurityStamp] nvarchar(max)  NULL,
    [Discriminator] nvarchar(128)  NOT NULL
);
GO

-- Creating table 'AspNetUserRoles'
CREATE TABLE [dbo].[AspNetUserRoles] (
    [AspNetRoles_Id] varchar(50)  NOT NULL,
    [AspNetUsers_Id] varchar(50)  NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------

-- Creating primary key on [Oid] in table 'CustomerTicketInfoes'
ALTER TABLE [dbo].[CustomerTicketInfoes]
ADD CONSTRAINT [PK_CustomerTicketInfoes]
    PRIMARY KEY CLUSTERED ([Oid] ASC);
GO

-- Creating primary key on [Id] in table 'AspNetRoles'
ALTER TABLE [dbo].[AspNetRoles]
ADD CONSTRAINT [PK_AspNetRoles]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

-- Creating primary key on [Id] in table 'AspNetUserClaims'
ALTER TABLE [dbo].[AspNetUserClaims]
ADD CONSTRAINT [PK_AspNetUserClaims]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

-- Creating primary key on [UserId], [LoginProvider], [ProviderKey] in table 'AspNetUserLogins'
ALTER TABLE [dbo].[AspNetUserLogins]
ADD CONSTRAINT [PK_AspNetUserLogins]
    PRIMARY KEY CLUSTERED ([UserId], [LoginProvider], [ProviderKey] ASC);
GO

-- Creating primary key on [Id] in table 'AspNetUsers'
ALTER TABLE [dbo].[AspNetUsers]
ADD CONSTRAINT [PK_AspNetUsers]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

-- Creating primary key on [AspNetRoles_Id], [AspNetUsers_Id] in table 'AspNetUserRoles'
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [PK_AspNetUserRoles]
    PRIMARY KEY CLUSTERED ([AspNetRoles_Id], [AspNetUsers_Id] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- Creating foreign key on [User_Id] in table 'AspNetUserClaims'
ALTER TABLE [dbo].[AspNetUserClaims]
ADD CONSTRAINT [FK_dbo_AspNetUserClaims_dbo_AspNetUsers_User_Id]
    FOREIGN KEY ([User_Id])
    REFERENCES [dbo].[AspNetUsers]
        ([Id])
    ON DELETE CASCADE ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_dbo_AspNetUserClaims_dbo_AspNetUsers_User_Id'
CREATE INDEX [IX_FK_dbo_AspNetUserClaims_dbo_AspNetUsers_User_Id]
ON [dbo].[AspNetUserClaims]
    ([User_Id]);
GO

-- Creating foreign key on [UserId] in table 'AspNetUserLogins'
ALTER TABLE [dbo].[AspNetUserLogins]
ADD CONSTRAINT [FK_dbo_AspNetUserLogins_dbo_AspNetUsers_UserId]
    FOREIGN KEY ([UserId])
    REFERENCES [dbo].[AspNetUsers]
        ([Id])
    ON DELETE CASCADE ON UPDATE NO ACTION;
GO

-- Creating foreign key on [AspNetRoles_Id] in table 'AspNetUserRoles'
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [FK_AspNetUserRoles_AspNetRole]
    FOREIGN KEY ([AspNetRoles_Id])
    REFERENCES [dbo].[AspNetRoles]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [AspNetUsers_Id] in table 'AspNetUserRoles'
ALTER TABLE [dbo].[AspNetUserRoles]
ADD CONSTRAINT [FK_AspNetUserRoles_AspNetUser]
    FOREIGN KEY ([AspNetUsers_Id])
    REFERENCES [dbo].[AspNetUsers]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_AspNetUserRoles_AspNetUser'
CREATE INDEX [IX_FK_AspNetUserRoles_AspNetUser]
ON [dbo].[AspNetUserRoles]
    ([AspNetUsers_Id]);
GO

-- Creating foreign key on [Id] in table 'AspNetRoles'
ALTER TABLE [dbo].[AspNetRoles]
ADD CONSTRAINT [FK_AspNetRoles_AspNetRoles]
    FOREIGN KEY ([Id])
    REFERENCES [dbo].[AspNetRoles]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [Id] in table 'AspNetUsers'
ALTER TABLE [dbo].[AspNetUsers]
ADD CONSTRAINT [FK_AspNetUsers_AspNetUsers]
    FOREIGN KEY ([Id])
    REFERENCES [dbo].[AspNetUsers]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;
GO

-- Creating foreign key on [AspNetUserId] in table 'CustomerTicketInfoes'
ALTER TABLE [dbo].[CustomerTicketInfoes]
ADD CONSTRAINT [FK_AspNetUserCustomerTicketInfo]
    FOREIGN KEY ([AspNetUserId])
    REFERENCES [dbo].[AspNetUsers]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non-clustered index for FOREIGN KEY 'FK_AspNetUserCustomerTicketInfo'
CREATE INDEX [IX_FK_AspNetUserCustomerTicketInfo]
ON [dbo].[CustomerTicketInfoes]
    ([AspNetUserId]);
GO

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------
在运行该Sql之后,它创建了一个名为CustomerTicketInfoes的新表,该表具有我想要的AspNetUser关系(但它不再使用我最初创建的表)

然后,我使用PM启用了迁移。我从数据库中更新了模型,因为创建了一个新表

我不确定这些是否与错误有关。但当我得到上面的错误时,这就是我正在做的。只需尝试登录到web应用程序。注册用户名+通行证。我还尝试了另一种浏览器,认为它与cookies有关。仍然失败


任何输入都将不胜感激。

看来它一定是使用了错误的表格,不是吗?也许在db上下文类中,applicationdbcontext是默认版本,所以只需显式设置表名,如

protected override void OnModelCreating(DbModelBuilder modelBuilder)

    base.OnModelCreating(modelBuilder); // This needs to go before the other rules!

    modelBuilder.Entity<User>().ToTable("AspnetUser");
    modelBuilder.Entity<Role>().ToTable("AspnetRoles");
    modelBuilder.Entity<UserRole>().ToTable("etc");
    modelBuilder.Entity<UserLogin>().ToTable("etc");
    modelBuilder.Entity<UserClaim>().ToTable("etc");
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);//这需要先于其他规则!
modelBuilder.Entity().ToTable(“AspnetUser”);
modelBuilder.Entity().ToTable(“AspnetRoles”);
modelBuilder.Entity().ToTable(“etc”);
modelBuilder.Entity().ToTable(“etc”);
modelBuilder.Entity().ToTable(“etc”);
}
  • 重命名表
    AspNetUserRoles

    a. From `AspNetRole_Id` to `RoleId`
    
    b. From `AspNetUser_Id` to `UserId`
    
  • 从数据库更新模型

  • 尝试登录,现在可以正常工作了


  • 您是否运行了PM>更新数据库?。或者,检查这些值是否适用于另一个db(它们可以查看默认的db,而不是生成的db),谢谢!知道为什么它默认为前者吗?