[英]EF Core 1.1 to WebApi Core - Add-Migration fails
我想我的所有依赖项都正常运行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”
},
我的ApplicationDbContext确实有构造函数:
public ApplicationDbContext(DbContextOptions options) : base(options)
{ }
我的Startup.cs确实有:
services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)));
还有什么呢?
该问题与builder.AddUserSecrets()
调用有关。 要修复,请执行以下步骤:
通过添加属性添加用户秘密到组件(而不是仅仅project.json) [assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]
到Startup.cs
在Startup.cs中,用builder.AddUserSecrets<Startup>();
替换builder.AddUserSecrets()
builder.AddUserSecrets<Startup>();
参考: InvalidOperationException:无法在程序集中找到“UserSecretsIdAttribute”
另一种解决方案:
我遇到了同样的问题并降落在这里。 但我正在从头开始编写一个应用程序,将每个步骤与DotNetCore WebApp与Individual auth进行比较。 在VS 2017中通过向导生成,希望遵循最新实践。 因此,当我的代码和生成的代码中的所有内容完全相同时,我感到很奇怪。 生成的代码在startup.cs中没有Michael Dennis的建议代码,这并不意味着他错了,它只是意味着现在有了不同的方式。 在进一步深入了解后,我发现UserSecretsId在myprojetname.csproj中声明如下:
<PropertyGroup>
<UserSecretsId>aspnet-mywebproect-006a401f-2fdc-4aad-abb1-12c00000004a</UserSecretsId>
</PropertyGroup>
在我的project.csproj文件中添加条目后,问题得到了解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.