ASP.NET身份核心表未在MSSQL数据库中生成

时间:2017-12-11 06:21:32

标签: asp.net-core asp.net-identity entity-framework-core asp.net-identity-3

Microsoft Visual Studio 2017中的.NET核心2.0解决方案,带有最新更新

自从我在.NET核心1.1上运行得很好以来,我的应用程序还没有运行。在看了一些Shawn Wildermuth,Kevin Dockx和Julie Lehrman关于Pluralsight的视频后,我开始了一个非常好的开始。不幸的是,现在.NET 2.0中的事情发生了根本性的变化!我最初尝试升级,但这是一场灾难!我最终放弃并重新开始使用.NET核心2.0解决方案并复制/粘贴旧代码。

我的解决方案有两个项目,一个用于API的ASP.NET核心应用程序和一个用于数据的.NET核心控制台应用程序。我使用ASP.NET身份核心与Entity Framework Core(2.0.1),并且我连接到MSSQL Server 2017 SQLEXPRESS数据库。

当我重新开始时,我没有数据库。所以我打开包管理器并运行" Add-Migration Initial"。这会生成以下输出...

PM> Add-Migration Initial
Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
    User profile is available. Using 'C:\Users\user1\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Microsoft.EntityFrameworkCore.Infrastructure[10403]
    Entity Framework Core 2.0.1-rtm-125 initialized 'DatabaseContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
Microsoft.EntityFrameworkCore.Database.Command[20101]
    Executed DbCommand (256ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
    CREATE DATABASE [CFC0000001TC];
Microsoft.EntityFrameworkCore.Database.Command[20101]
    Executed DbCommand (58ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
      IF SERVERPROPERTY('EngineEdition') <> 5 EXEC(N'ALTER DATABASE [CFC0000001TC] SET READ_COMMITTED_SNAPSHOT ON;');
Microsoft.EntityFrameworkCore.Database.Command[20101]
    Executed DbCommand (6ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
    CREATE TABLE [__EFMigrationsHistory] (
        [MigrationId] nvarchar(150) NOT NULL,
        [ProductVersion] nvarchar(32) NOT NULL,
        CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
    );
Microsoft.EntityFrameworkCore.Database.Command[20101]
    Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
    SELECT OBJECT_ID(N'__EFMigrationsHistory');
Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
    SELECT [MigrationId], [ProductVersion]
    FROM [__EFMigrationsHistory]
    ORDER BY [MigrationId];
Microsoft.EntityFrameworkCore.Migrations[20405]
    No migrations were applied. The database is already up to date.
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
    Failed executing DbCommand (24ms) [Parameters=[@__normalizedUserName_0='?' (Size = 256)], CommandType='Text', CommandTimeout='30']
    SELECT TOP(1) [u].[Id], [u].[AccessFailedCount], [u].[ConcurrencyStamp], [u].[Email], [u].[EmailConfirmed], [u].[FirstName], [u].[LastName], [u].[LockoutEnabled], [u].[LockoutEnd], [u].[NormalizedEmail], [u].        [NormalizedUserName], [u].[PasswordHash], [u].[PhoneNumber], [u].[PhoneNumberConfirmed], [u].[SecurityStamp], [u].[TwoFactorEnabled], [u].[UserName]
    FROM [SystemUser] AS [u]
    WHERE [u].[NormalizedUserName] = @__normalizedUserName_0
System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'SystemUser'.
   at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__108_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.<ExecuteAsync>d__17.MoveNext()
ClientConnectionId:9a66b342-9ca7-427e-af3a-8cffa483c72f
Error Number:208,State:1,Class:16
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
    Failed executing DbCommand (24ms) [Parameters=[@__normalizedUserName_0='?' (Size = 256)], CommandType='Text', CommandTimeout='30']
    SELECT TOP(1) [u].[Id], [u].[AccessFailedCount], [u].[ConcurrencyStamp], [u].[Email], [u].[EmailConfirmed], [u].[FirstName], [u].[LastName], [u].[LockoutEnabled], [u].[LockoutEnd], [u].[NormalizedEmail], [u].        [NormalizedUserName], [u].[PasswordHash], [u].[PhoneNumber], [u].[PhoneNumberConfirmed], [u].[SecurityStamp], [u].[TwoFactorEnabled], [u].[UserName]
    FROM [SystemUser] AS [u]
    WHERE [u].[NormalizedUserName] = @__normalizedUserName_0
System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'SystemUser'.
   at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__108_0(Task`1 result)  
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---

如您所见,生成以下错误消息:

无效的对象名称&#39; SystemUser&#39;。

当我使用SQL Management Studio查看创建的数据库时,我只能看到一个表,它与EF迁移有关。没有与ASP.NET标识或其他任何内容相关的表。

其他信息:

否&#34;迁移&#34;在我的项目中生成/创建文件夹

我的数据库上下文类继承自IdentityDbContext

我的数据库上下文(以及其他项目)包含以下两个函数:

public DatabaseContext(DbContextOptions<DatabaseContext> options) : 
base(options)
    {
        Database.Migrate();
    }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=MYSERVER\\SQLEXPRESS;Database=CFC0000001TC;Trusted_Connection=True;");
    }

我的创业班&#39; ConfigureServices包含:

        services.AddDbContext<DatabaseContext>(ServiceLifetime.Scoped);

        services.AddIdentity<Data.Entities.System.SystemUser, IdentityRole>().AddEntityFrameworkStores<DatabaseContext>();

        services.AddScoped<IRepository, Repository>();

        services.AddTransient<DatabaseInitializer>();

我的创业班&#39;配置包含:

app.UseAuthentication();

另外,我的创业班&#39;配置包含(作为最后一行):

databaseInitializer.Seed().Wait();

如果我只运行应用程序,它似乎在 databaseInitializer.Seed()。Wait()调用的第一行失败,其中包含对 UserManager.FindByNameAsync的调用( ...

你能帮我解决一下这里有什么问题吗?当我运行&#34; Add-Migration Initial&#34;?

时,我的数据库中没有生成ASP.NET标识核心表的可能原因是什么?

0 个答案:

没有答案
相关问题