Update-Database не применяет миграцию к базе данных - PullRequest
0 голосов
/ 27 февраля 2020

Для пакетов в модельном проекте:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0">

с

 <TargetFramework>netcoreapp2.2</TargetFramework>

с sdk, установленным на машине:

C:\WINDOWS\system32> dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]
2.1.505 [C:\Program Files\dotnet\sdk]
2.1.602 [C:\Program Files\dotnet\sdk]
2.1.604 [C:\Program Files\dotnet\sdk]
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk]
2.1.802 [C:\Program Files\dotnet\sdk]
2.2.104 [C:\Program Files\dotnet\sdk]
2.2.207 [C:\Program Files\dotnet\sdk]
3.1.101 [C:\Program Files\dotnet\sdk]

Я запускаю команду следующим образом:

PM> Update-Database -Context DalContext -Verbose
Using project 'DAL\Geotik.DAL.DbAL'.
Using startup project 'WebApis\Geotik.WebApis.GeotikApi'.
Build started...
Build succeeded.
C:\Program Files\dotnet\dotnet.exe exec --depsfile D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi\bin\Debug\netcoreapp2.2\Geotik.WebApis.GeotikApi.deps.json --additionalprobingpath C:\Users\HubertWojtowiczGeoti\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi\bin\Debug\netcoreapp2.2\Geotik.WebApis.GeotikApi.runtimeconfig.json "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.2.0\tools\netcoreapp2.0\any\ef.dll" database update --context DalContext --verbose --no-color --prefix-output --assembly D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi\bin\Debug\netcoreapp2.2\Geotik.DAL.DbAL.dll --startup-assembly D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi\bin\Debug\netcoreapp2.2\Geotik.WebApis.GeotikApi.dll --project-dir D:\Repos\Geotik\Geotik\DAL\Geotik.DAL.DbAL\ --language C# --working-dir D:\Repos\Geotik\Geotik --root-namespace Geotik.DAL.DbAL
Using assembly 'Geotik.DAL.DbAL'.
Using startup assembly 'Geotik.WebApis.GeotikApi'.
Using application base 'D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi\bin\Debug\netcoreapp2.2'.
Using working directory 'D:\Repos\Geotik\Geotik\WebApis\Geotik.WebApis.GeotikApi\Geotik.WebApis.GeotikApi'.
Using root namespace 'Geotik.DAL.DbAL'.
Using project directory 'D:\Repos\Geotik\Geotik\DAL\Geotik.DAL.DbAL\'.
Finding DbContext classes...
Finding IDesignTimeDbContextFactory implementations...
Finding application service provider...
Finding IWebHost accessor...
Using environment 'Development'.
Using application service provider from IWebHost accessor on 'Program'.
Found DbContext 'DalContext'.
Found DbContext 'TdcDalContext'.
Finding DbContext classes in the project...
Using context 'DalContext'.
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'...
Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'.
Finding design-time services referenced by assembly 'Geotik.WebApis.GeotikApi'.
No referenced design-time services were found.
Finding IDesignTimeServices implementations in assembly 'Geotik.WebApis.GeotikApi'...
No design-time services were found.
Done.

Он ничего не делает с базой данных. Я ожидал, что это добавит миграцию, но это не так. У меня было раньше: enter image description here

В VS2019 у меня есть миграции:

enter image description here

Я сделал дополнительные проверки :

  1. Когда я создал пустую базу данных и выполнил ту же команду, там была создана только пустая таблица __EFMigrationsHistory.
  2. Я переустановил все пакеты nuget, но это не помогло.

Может sb, пожалуйста, помогите мне понять, почему это не относится к последней миграции 20200227120415_ChangeMergeStatusIdCollumnInFuelingMergeTable?

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Оказалось, что мой коллега добавил код:

<PropertyGroup>
    <DefaultItemExcludes Condition="'$(Configuration)' == 'Debug' ">Migrations\**\*.Designer.cs</DefaultItemExcludes>
</PropertyGroup>

для оптимизации времени сборки в CICD. Это вызвало миграцию, не обнаруживаемую для инструментов ef.

0 голосов
/ 28 февраля 2020

Похоже, он не находит ваши классы миграции.

Found DbContext 'DalContext'.
Found DbContext 'TdcDalContext'.
Использование контекста 'DalContext'.

Ваши миграции помечены [DbContext(typeof(TdcDalContext))] вместо DalContext?

...