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

时间:2016-11-29 05:02:03

标签: c# .net entity-framework asp.net-core entity-framework-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'或添加一个   在同一个程序集中实现'IDbContextFactory'   “ApplicationDbContext”。

我的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”
},

我的ApplicationDbContext确实有构造函数:

public ApplicationDbContext(DbContextOptions options) : base(options)
 { }

,我的Startup.cs确实有:

services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)));

它还能做什么?

3 个答案:

答案 0 :(得分:5)

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

  1. 通过将属性[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]添加到 Startup.cs project.json ) >

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

  3. 参考:InvalidOperationException: Could not find 'UserSecretsIdAttribute' on assembly

答案 1 :(得分:1)

您的问题与EF Core无关,它与User Secrets

有关

检查您的Startup.cs构造函数 - 它包含AddUserSecrets()调用。你可以删除它。稍后,当您阅读有关用户秘密的内容时,您可以使用正确的配置将其添加回来(我猜你有1.0.0的网站模板,同时引用库1.1.0 - 它包含this bug fix

答案 2 :(得分:1)

另一种解决方案:

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

<PropertyGroup>
    <UserSecretsId>aspnet-mywebproect-006a401f-2fdc-4aad-abb1-12c00000004a</UserSecretsId>
</PropertyGroup>

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