Entity Framework Core 脚手架访问方法失败

3
在运行以下命令后:
dotnet ef dbcontext scaffold
"Server=SERVERNAME;Database=MYDATABASE;Trusted_Connection=True;"
Microsoft.EntityFrameworkCore.SqlServer -o Models -f

我遇到了这个错误:

一个或多个错误发生。(尝试通过方法 'Microsoft.EntityFrameworkCore.Scaffolding.Configuration.Internal.ModelConfiguration.get_EntityConfigurations()' 访问方法 'Microsoft.EntityFrameworkCore.Metadata.Internal.EntityTypeNameComparer..ctor()' 失败。)

project.json:

{
  "userSecretsId": "aspnet-APPLICATION-0799fe3e-6eaf-4c5f-b40e-7c6bfd5dfa9a",
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-update1",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-update1",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.Extensions.Logging.Abstractions": "1.1.0",
    "Newtonsoft.Json": "9.0.1",
    "Microsoft.AspNetCore.Mvc.Versioning": "1.0.2"
  },
  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    },
    "Microsoft.Extensions.SecretManager.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    }
  },
  "frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "appsettings.json",
      "web.config"
    ]
  },
  "scripts": {
    "prepublish": [
      "npm install",
      "bower install",
      "gulp clean",
      "gulp min"
    ],
    "postpublish": [
      "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
    ]
  },
  "tooling": {
    "defaultNamespace": "APPLICATION"
  }
}

Dotnet版本:

目前已经无法追踪所有的版本并使它们协同工作了。


我知道我已经厌倦了这个。我并不是真的想念我们过去必须等待两年的日子,但那时所有的东西都能一次性完美地协同工作。 - Simon_Weaver
2个回答

9
所以解决方案是:
"dependancies":{
   "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
}

"tools": {
   "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
   "Microsoft.EntityFrameworkCore.Tools.DotNet": " 1.1.0-preview4-final"
},

@HorevIvan,据我所知,对于2.2版本,你应该拥有所有的工具,因为它们都与SDK捆绑在一起。如果我错了,请纠正我。 - Dživo Jelić

1

在安装了.NET Core 1.1 SDK之前,我遇到了各种各样的错误。

https://www.microsoft.com/net/download/core#/current

是的,1.1版本的文件名为dotnet-dev-win-x64.1.0.0-preview2-1-003177.exe

对我来说之前和之后

C:\Users\SimonWeaver>dotnet --version
1.0.0-preview2-003131

C:\Users\SimonWeaver>dotnet --version
1.0.0-preview2-1-003177

现在工具已经可以很好地进行脚手架建设。

再次回顾,我发现您已经安装了这个工具,但我会将其留在这里,以防其他人没有安装。


这可能是真的,但我已经拥有了最新版本的DotNet :) - Dživo Jelić

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接