【问题标题】:Npgsql EF Core Provider v2.0: Can't reverse-engineer a core model from existing databaseNpgsql EF Core Provider v2.0:无法从现有数据库对核心模型进行逆向工程
【发布时间】:2018-04-20 10:46:48
【问题描述】:

开发环境:

  • macOS Sierra 版本 10.12.6
  • Visual Studio Community for Mac 版本 7.2.2
  • postgreSQL 版本 9.4.5
  • Npgsql.EntityFrameworkCore.PostgreSQL 版本 2.0.0 (Npgsql 3.2.5)

参考http://www.npgsql.org/efcore/index.html

这是 .csproj 的内容:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <Folder Include="wwwroot\" />
        <Folder Include="SQL Scripts\" />
        <Folder Include="Models\" />
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="2.0.0-preview1" />
    </ItemGroup>
    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
    </ItemGroup>
</Project>

从 .csproj 内容中,注意“Npgsql.EntityFrameworkCore.PostgreSQL.Design”的版本。它是“2.0.0-preview1”。 “2.0.0”没有 nuget 包。

当我尝试发出命令对现有 postgreSQL 数据库进行逆向工程时,我遇到以下消息:

Version for package `Microsoft.VisualStudio.Web.CodeGeneration.Tools` could not be resolved.

这是我用来对现有数据库进行逆向工程的经过清理的命令行:

dotnet ef dbcontext scaffold "Host=localhost;Database=mydatabase;Username=me;Password=mypwd" Npgsql.EntityFrameworkCore.PostgreSQL

Microsoft.VisualStudio.Web.CodeGeneration.Tools 包的版本是 2.0.0 版。

我的 NuGet 设置如下:

【问题讨论】:

    标签: .net entity-framework-core npgsql macos-sierra


    【解决方案1】:

    几点说明:

    1. 没有 Npgsql.EntityFrameworkCore.PostgreSQL.Design 因为该包已合并到 2.0.0 版本中的主包中。您应该删除该依赖项。
    2. Microsoft.VisualStudio.Web.CodeGeneration.Tools 与实体框架无关 - 它是一个与 ASP.NET Web 相关的命令。我不确定您为什么会收到错误消息,尝试暂时删除该依赖项以查看会发生什么。
    3. 命令行脚手架可通过 Microsoft.EntityFrameworkCore.Tools.DotNet 包获得,您似乎没有引用它。请参阅 this page 获取帮助和其他 EF Core 教程。

    【讨论】:

    • 您的 cmets 帮助并让我上路了。
    【解决方案2】:

    谢伊,感谢您的快速回复。它有很大帮助。以下是最终解决问题的 .csproj 内容:

    <Project Sdk="Microsoft.NET.Sdk.Web">
        <PropertyGroup>
            <TargetFramework>netcoreapp2.0</TargetFramework>
        </PropertyGroup>
        <ItemGroup>
            <Folder Include="wwwroot\" />
            <Folder Include="SQL Scripts\" />
            <Folder Include="Models\" />
        </ItemGroup>
        <ItemGroup>
            <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
            <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0" />
            <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
        </ItemGroup>
        <ItemGroup>
            <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
            <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
        </ItemGroup>
    </Project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2014-09-30
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多