如果您有一个现有的数据库,并且想要将Asp.NET Identity表包含到它,您可以面对此错误。另外在开始时,您可能不知道如何将[AspNetRoles],[AspNetUserClaims],[AspNetUsers],[AspNetUserLogins]表整合到您现有的数据库中。尽管关于这个话题有很多资源,但这个答案是其中最短的一个。您可能想在Asp.NET MVC的Asp.NET Identity功能旁边的实体框架中使用Database-First方法。这是一个非常简短的傻瓜教程。对不起,我的英文如果不好。Asp.NET MVC 5实体框架中的对象名称'dbo.AspNetUsers'无效
回答
这是Asp.NET Identity表与您现有数据库的最短集成。
1)在Visual Studio(2015或2013)中打开新项目或现有项目。打开您的服务器资源管理器并打开您的DefaultConnection。查找您的标识表。 (在WebConfig文件中,localDB连接字符串应该是活动的,并且您的其他现有数据库连接字符串不应该是活动的。)双击您的[AspNetRoles],[AspNetUserClaims],[AspNetUsers],[AspNetUserLogins]表。并复制他们所有的SQL代码。
2)在你的SQL Server Management Studio中打开你现有的数据库,右键点击你的数据库,然后点击新查询在这里过去你在第一部分复制的内容。你将过去的类似的东西:
CREATE TABLE [dbo].[AspNetRoles] (
[Id] NVARCHAR (128) NOT NULL,
[Name] NVARCHAR (256) NOT NULL,
CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [RoleNameIndex]
ON [dbo].[AspNetRoles]([Name] ASC);
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)
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
ON [dbo].[AspNetUsers]([UserName] ASC);
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_UserId]
ON [dbo].[AspNetUserRoles]([UserId] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_RoleId]
ON [dbo].[AspNetUserRoles]([RoleId] ASC);
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),
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);
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),
CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE
);
GO
CREATE NONCLUSTERED INDEX [IX_UserId]
ON [dbo].[AspNetUserClaims]([UserId] ASC);
如果忘记了与GO开始的所有行,你会看到究竟是在这个问题上的标题错误。运行此查询并等待成功创建表。您现有的数据库现在已准备好用于Asp.NET MVC 5的标识功能。
3)在您的Visual Studio中打开WebConfig。我们将在这里更改连接字符串。写这个:
<add name="DefaultConnection" connectionString="Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;Persist Security Info=True;User ID=YOUR_USER_ID;Password=YOUR_PASSWORD.;MultipleActiveResultSets=True;Application Name=EntityFramework" providerName="System.Data.SqlClient"/>
而不是localDB连接字符串。这是这样的:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-....mdf;Initial Catalog=aspnet-...;Integrated Security=True" providerName="System.Data.SqlClient" />
这就是你需要做的。运行你的项目并注册。您可以在现有数据库的AspNetUsers表中看到新的用户数据。
在Visual Studio中进入“工具 - > NuGet包管理器 - >软件包管理器控制台”,并在控制台窗口(在Visual Studio中)执行“更新-数据库”命令
我经历了这一点。
一段时间用户创建自定义的成员,因此类不asp.net创建AspNetUsers表
例如:
public class Member : IdentityUser
{
Public int MemberID { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string Password { get; set; }
}
在这种情况下ASP.NET创建成员表中,当用户要进行身份验证,ASP.NET搜索AspNetUsers并没有找到这张表。 这个问题,附加TableAttribute解决了定制开始类的
[Table("AspNetUsers")]
public class Member : IdentityUser
{
Public int MemberID { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string Password { get; set; }
}
- 1. ASP.NET MVC /实体框架错误 - 无效的列名称Environment_Id“
- 2. 实体框架5无效的列名
- 3. 实体框架:无效的列名称
- 4. 实体框架 - 无效的对象名称
- 5. 实体框架数据优先 - 无效的对象名称dbo.TableName
- 6. 实体框架异常:无效的对象名称'导航'
- 7. C#实体框架错误:无效的对象名称'dbo.TableName'
- 8. 实体框架无效的对象名称错误
- 9. 实体框架4.1无效的对象名称'我'
- 10. 实体框架4.1无效的对象名称
- 11. 实体框架无效的列名称
- 12. 如何解决我的无效对象名称'dbo.AspNetUsers'错误?
- 13. 实体框架:实体名称中的无效字符列表
- 14. ASP.NET mvc 5,实体框架,排除modeldata
- 15. InnerException \t {“无效的对象名'dbo.PlayerSet'。”}实体框架4
- 16. 实体框架抛出怪“无效的对象名称错误执行插入
- 17. 实体框架代码第一个和无效的对象名称错误
- 18. 实体框架在表存在时说无效的对象名称
- 19. SqlException:无效的列名(实体框架)
- 20. 实体框架无效的列名'Model_Key'
- 21. 实体框架:无效的列名'OrganizationStructure_ID'
- 22. 实体框架和asp.net mvc
- 23. 实体框架与ASP.NET MVC
- 24. ASP.NET MVC实体框架ObjectContext
- 25. ASP.NET MVC与实体框架
- 26. 具有身份的MVC5站点中的对象名称'dbo.AspNetUsers'无效
- 27. 指定引用对象的实体框架中列的名称
- 28. 实体框架5代码第一个无效列名?
- 29. 无效的对象名称dbo.tbLanguage - ASP.net
- 30. 实体框架4.1无效列名
嗨@Alparslan,还有另一种方式来做到这一点。像第3节中所做的那样更改连接字符串。然后在网页上执行注册用户。您将看到正在创建的5个表格。 –
感谢您的回答。我在这里看到了你的解决方案。但是这并不适用于我的情况。或者,也许我做错了什么。我有一些错误。而不是在互联网上研究这些错误,以及如果有人遇到这些错误,他们可以使用这种解决方案。 – Alp
好吧,我明白了。 –