EF遷移:參數'frameworkName'不能是空字符串

c# entity-framework entity-framework-core nuget

我正在關注如何使用.netcore設置我的第一個web api的一些教程。我在嘗試運行第一次遷移時遇到問題:

PM> Add-Migration InitialMigration Exception calling ".ctor" with "1" argument(s): "The parameter 'frameworkName' cannot be an empty string. Parameter name: frameworkName"

據我所知,有一個構造函數,其中一個參數是空的;但是,我不知道這個“frameworkName”參數在哪裡。我假設它是一些內部EF機制。

該錯誤消息引用了哪個類?

這是我簡單的實體設置

public class ShackupContext : DbContext
{
    public DbSet<Post> Posts { get; set; }
    public ShackupContext(DbContextOptions<ShackupContext> options):base(options)
    {

    }
}  


    public class Post
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    [MaxLength(200)]
    public string Name { get; set; }
}  

更新1我更新了我的dbcontext以調用@ViktorsTelle建議的基類構造函數。

我的項目設置與我所遵循的任何教程不同。主要的區別是我的實體包含在他們自己的項目中,而不是在api項目本身。
在此處輸入圖像描述
這讓我相信在Shackup.Data項目上運行Add-Migration並不需要我在我的api項目中註冊我的dbcontext。無論如何,我做了它,看看會發生什麼:

 public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        services.AddDbContext<ShackupContext>(o => 
        o.UseNpgsql(Configuration["connectionStrings:postgres"],
        a => a.MigrationsAssembly("Shackup.Data")));
    }  

一旦我這樣做了,我設法在遷移過程中進一步了解。我現在正在
PM> Add-Migration InitialMigration The specified deps.json [C:\Users\campo\Documents\Visual Studio 2015\Projects\Shackup\src\Shackup.Api\bin\Debug\netcoreapp1.1\Shackup.Api.deps.json] does not exist Process finished with non-zero exit code

所以我看了看那個目錄,確實它丟失了文件;但是,該文件正在輸出到該目錄的子文件夾。

在此處輸入圖像描述

deps.json文件位於win10-x64文件夾中。我可以簡單地複制並粘貼到所需的文件夾,但現在我遇到了一個新問題:

為什麼Nuget包管理器控制台看錯了目錄?
或者可能:我怎樣才能改變它以找到正確的位置?

更新2

我已經更新了兩個項目中的所有項目依賴項。以下是數據的兩個文件和下面的api項目

API

{
"dependencies": {
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.EntityFrameworkCore": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.NETCore.App": "1.1.0",
"Shackup.Data": "1.0.0-*",
"Npgsql.EntityFrameworkCore.PostgreSQL": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final"
},

"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
},

"frameworks": {
"netcoreapp1.1": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8"
  ]
}
},

"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},

"runtimeOptions": {
"configProperties": {
  "System.GC.Server": true
}
},
"runtimes": {
"win10-x64": {},
"win81-x64": {}
},

"publishOptions": {
"include": [
  "wwwroot",
  "**/*.cshtml",
  "appsettings.json",
  "web.config"
]
},

"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}  

數據

{
"version": "1.0.0-*",

"dependencies": {
"Microsoft.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"NETStandard.Library": "1.6.1"
},

 "frameworks": {
"netstandard1.6": {
  "imports": "dnxcore50"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
}
}

熱門答案

在解決方案中選擇正確的啟動項目:在解決方案資源管理器中右鍵單擊您的項目,選擇“設置為啟動項目”



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因