2015-05-23 63 views
1

我正在研究一個有兩種解決方案的項目,第一個是桌面應用程序,管理員可以完成所有管理,他可以添加用戶,刪除它們等。 在用戶可以註冊的Web部件上,登錄等等我不能使asp身份使用我自己的數據庫,只要我改變連接字符串,我得到以下錯誤[無效的對象名'dbo.AspNetUsers'。]這意味着沒有這樣的表。
我認爲,asp.net身份將自動創建這些表。我需要手動執行嗎?手動編寫腳本並使asp.net身份使用它們會更好。這可能嗎 ?如何讓asp身份使用我的數據庫而不是自動創建的mdf數據庫?

回答

1

最後我用sql managment studio解決了這個問題。我用sqlms打開了我的AppData文件夾中的mdf文件,然後右鍵單擊新創建的數據庫,在任務上懸停並單擊生成腳本。我標記了所有的表格,並創建了一個腳本。然後我用我的數據庫運行該腳本,現在它完美運行。這裏是腳本:

USE [aspnet-HotelsWeb-20150427120248] 
GO 
/****** Object: Table [dbo].[__MigrationHistory] Script Date: 23.5.2015 19:47:59 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[__MigrationHistory](
    [MigrationId] [nvarchar](150) NOT NULL, 
    [ContextKey] [nvarchar](300) NOT NULL, 
    [Model] [varbinary](max) NOT NULL, 
    [ProductVersion] [nvarchar](32) NOT NULL, 
CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY CLUSTERED 
(
    [MigrationId] ASC, 
    [ContextKey] 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 
SET ANSI_PADDING OFF 
GO 
/****** Object: Table [dbo].[AspNetRoles] Script Date: 23.5.2015 19:47:59 ******/ 
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: 23.5.2015 19:47:59 ******/ 
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: 23.5.2015 19:47:59 ******/ 
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: 23.5.2015 19:47:59 ******/ 
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: 23.5.2015 19:47:59 ******/ 
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 
0

這聽起來對我來說就像你有兩個DbContext s。如果你想讓Identity爲你生成這些表格,你應該只是讓你的DbContext繼承自IdentityDbContext,你就會全部設置好。你可以檢查這個Stackoverflow問題如何Merge MyDbContext with IdentityDbContext

您還需要添加遷移。

東西你應該知道的是,IdentityDbContext不是黑魔法,它只是一個DbContext有幾個predifined DbSet是你可以檢出源here

相關問題