【问题标题】:Entity Framework Core won't let me scaffoldEntity Framework Core 不会让我脚手架
【发布时间】:2021-05-10 05:51:05
【问题描述】:

当我尝试使用 Entity Framework Core (CRUD) 添加 Razor 页面时,我不断收到此错误:

我该如何解决这样的问题?

这是我的.csproj 文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <StartupObject>BCC_PurchasingAuth.Program</StartupObject>
    <ApplicationIcon></ApplicationIcon>
    <OutputType>Exe</OutputType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Ardalis.GuardClauses" Version="3.0.1" />
    <PackageReference Include="AutoMapper.Collection.EntityFrameworkCore" Version="7.0.1" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\BCC_PurchasingAuthDB\BCC_PurchasingAuthDB.csproj" />
  </ItemGroup>

</Project>

这些是我看过的资源:

"Build failed" on Database First Scaffold-DbContext

Can't Add View from Controller in VS 2015 : "There was an error running the selected code generator"

https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/intro?view=aspnetcore-5.0&tabs=visual-studio

完全披露:我的解决方案包含两个项目。我使用 EF Core Power Tools 将我的数据库反向工程为一个类库项目。而且我的页面在一个单独的应用程序项目中。

这是类库的.csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
  </ItemGroup>

</Project>

让我知道哪些其他信息对此类错误有用,我会添加它。

【问题讨论】:

  • 也许是this works?顺便问一下,你用的是哪个 VS 版本?
  • 因为你的项目版本是3.1,所以你不应该使用包&lt;PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.2" /&gt;。你需要把它改成3.x。
  • 我正在使用 Visual Studio 2019

标签: c# asp.net-core entity-framework-core razor-pages asp.net-core-3.1


【解决方案1】:

你需要把你的类库.csproj file改成关注

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.11">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
</ItemGroup>

还有你的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <StartupObject>BCC_PurchasingAuth.Program</StartupObject>
    <ApplicationIcon></ApplicationIcon>
    <OutputType>Exe</OutputType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Ardalis.GuardClauses" Version="3.0.1" />
    <PackageReference Include="AutoMapper.Collection.EntityFrameworkCore" Version="7.0.1" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.11" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.11" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.11">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\BCC_PurchasingAuthDB\BCC_PurchasingAuthDB.csproj" />
  </ItemGroup>

</Project>

【讨论】:

  • 嗨,我们很难理解为什么这是解决方案。您能否更清楚地描述所需的更改?
  • 将您的 efcore 版本从 5.0 更改为 3.x
  • 因为op的项目版本是3.0
  • 我需要做什么才能保持最新版本的 ef core?
  • 嗨@SpookyBooky,您现在可以成功生成脚手架了吗?如果要保留最新版本的 efcore,则需要将项目升级到 .net 5。
猜你喜欢
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
相关资源
最近更新 更多