【问题标题】:Why are Entity Framework packages automatically updating when I run a migration?为什么在我运行迁移时 Entity Framework 包会自动更新?
【发布时间】:2022-01-15 05:34:45
【问题描述】:

我在 .NET Standard 2.0 项目中定义了一个数据库上下文,以便 .NET 5.0 和 .NET 4.7.x 客户端都可以使用它。我正在尝试创建一个初始迁移并从中生成脚本。我正在使用以下命令来生成迁移:

dotnet ef migrations add InitialCreate --project My.Standard.DataContext.Project --startup-project My.DotNet5.Api

为了构建标准项目,我需要使用 Entity Framework 版本 3.1.21 创建迁移,因为更新的版本不适用于 .NET Standard 2.0。但是,当我运行上述命令时,.NET 5.0 API 中的包会自动更新到 5.0.12,这意味着生成的迁移代码与包含它的标准项目不兼容。

为什么会这样?我该如何阻止它发生?

我最好的猜测是,这是因为我使用了与 3.1.21 不兼容的东西。我知道我目前正在为 Id 和 iirc 使用字符串,这在 3.1.21 中是不可能的。

这是自动更改之前的项目文件:

 <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.21" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.21">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Identity.Web" Version="1.20.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />

【问题讨论】:

  • 请显示您的项目文件(nuget 包部分)。

标签: visual-studio entity-framework .net-core .net-standard


【解决方案1】:

在我做了两件事之后,这现在按预期工作。 (其中一个可能不相关。)

  1. 我将字符串 Id 更改为 int,以便与 EF 3.1.21 兼容
  2. 我清洗了溶液。

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2016-05-08
    • 2019-08-23
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-11-05
    相关资源
    最近更新 更多