首页 > 解决方案 > 使用 EF Core 3.1 在 Azure 函数中迁移 SQL 数据库时缺少 System.ComponentModel.Annotations

问题描述

我有一个带有 EF Core 3.1 的 Azure Function V3 CodeFirst 迁移创建运行良好,但现在,如果我第一次启动 azure 函数并尝试在函数的构造函数中迁移数据库:

myContext.Database.Migrate();

我有一个例外:

Could not load file or assembly 'System.ComponentModel.Annotations, Version=5.0.0.0, ....

我尝试在我的项目中明确包含另一个(较低)版本的 System.ComponentModel.Annotations:

  <ItemGroup>
     <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
     <PackageReference Include="Microsoft.Azure.WebJobs.Host.Storage" Version="4.0.1" />
     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.13" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.13">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.13" />
     <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.13" />
     <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
     <PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
  </ItemGroup>

但它仍然抛出异常。

我想我可以很好地定义我的目标框架和天蓝色函数版本:

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

我必须使用另一个打包程序(版本)吗?或者有什么我看不到的完全错误的东西?

标签: entity-framework-coreazure-functions.net-core-3.1ef-core-3.1

解决方案


推荐阅读