如果您有一個現有的數據庫,並且想要將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
好吧,我明白了。 –