EF Core 1.1到WebApi核心 - 添加迁移失败

Mic*_*nis 6 .net c# entity-framework entity-framework-core asp.net-core

我想我的所有依赖项都正常运行1.1但是当我尝试按照这里的步骤进行操作时https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db我得到了运行Add-Migration命令时出错.

PM> Add-Migration InitialState

在启动类'Startup'上调用方法'ConfigureServices'时发生错误.

考虑使用IDbContextFactory在设计时覆盖DbContext的初始化.错误:此方法找不到用户密码ID,因为未设置应用程序的条目程序集.请尝试使用".AddUserSecrets(Assembly assembly)"方法.在'ApplicationDbContext'上找不到无参数构造函数.要么将无参数构造函数添加到'ApplicationDbContext',要么在与'ApplicationDbContext'相同的程序集中添加'IDbContextFactory'的实现.

我的project.json的相关部分:...

 “Microsoft.EntityFrameworkCore”: “1.1.0”,
“Microsoft.EntityFrameworkCore.SqlServer”: “1.1.0”,
“Microsoft.EntityFrameworkCore.Design”: {
“type “: “build”,
“version”: “1.1.0”
},
“Microsoft.EntityFrameworkCore.Tools”: “1.1.0-preview4-final”
},

“tools”: {
“Microsoft.EntityFrameworkCore.Tools.DotNet”: “1.1.0-preview4-final”
},
Run Code Online (Sandbox Code Playgroud)

我的ApplicationDbContext确实有构造函数:

public ApplicationDbContext(DbContextOptions options) : base(options)
 { }
Run Code Online (Sandbox Code Playgroud)

我的Startup.cs确实有:

services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)));
Run Code Online (Sandbox Code Playgroud)

还有什么呢?

Mic*_*nis 5

该问题与builder.AddUserSecrets()电话有关.要修复,请执行以下步骤:

  1. 通过向Startup.cs添加属性,将用户机密添加到程序集(而不仅仅是project.json) [assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]

  2. Startup.cs中替换builder.AddUserSecrets()builder.AddUserSecrets<Startup>();

参考:InvalidOperationException:无法在程序集中找到"UserSecretsIdAttribute"


Has*_*san 1

替代解决方案:

我遇到了同样的问题并降落在这里。但我正在从头开始编写一个应用程序,将其每一步与具有个人身份验证的 DotNetCore WebApp 进行比较。它是通过 VS 2017 中的向导生成的,希望遵循最新的实践。因此,当我的代码和生成的代码中的所有内容都相同并且我收到此异常时,这很奇怪。生成的代码在startup.cs中没有Michael Dennis建议的代码,这并不意味着他错了,只是意味着现在有不同的方式。进一步深入后,我发现UserSecretsId在 myprojetname.csproj 中声明如下:

<PropertyGroup>
    <UserSecretsId>aspnet-mywebproect-006a401f-2fdc-4aad-abb1-12c00000004a</UserSecretsId>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

在我的project.csproj 文件中添加条目后,问题得到解决。