Я запускаю следующую команду в Powershell для создания начальной миграции:
dotnet ef migrations add INITIAL --context CATALOGDbContext -s ../Jobsledger.API
Пока она работает (я могу создать миграцию и базу данных), она выдает следующее предупреждение:
Версия инструментов EF Core '2.2.4-servicing-10062' старше, чем во время выполнения '3.0.0'. Обновите инструменты для последних функций и исправлений ошибок.
Это, я думаю, приводит к проблеме с результатом, что в моих таблицах теперь отсутствует идентификатор в первой записи. Его буквально пустым. Я не знаю, как это прекрасно работает в 2.2.4, но теперь обновил до 3.0.0, создав первую запись с пустым полем id ...
Я пошел на сайт " Entity Framework Coreсправочник по инструментам - Консоль диспетчера пакетов в Visual Studio", которая выполнила шаги по обновлению инструментов.
Хотя у меня все установлено на 3.0.0, я все еще получаю вышеуказанную ошибку, хотя я и пыталсяих предложения на этой странице. Я обновил файл .csproj и даже попробовал использовать опцию «Диспетчер пакетов», и все равно получаю сообщение об ошибке.
Я использую Visual Studio 19, полностью обновленную до версии 16.4.0 Preview 1.
Как заставить это предупреждение исчезнуть, т.е. как обновить инструменты EF?
ОБНОВЛЕНИЕ Поэтому я перестроил свой проект с нуля, убедившись, что я добавил все пакеты снова и все еще получилтот же результат.
Я также удалил все в каталоге nuget и позволил ему перезагрузить все пакеты снова и все же получил тот же результат.
Этот проект состоит из трех проектов веб-проекта и двухбиблиотеки классов базы данных.
Вот мой файл csproj для веб-проекта.
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
<TypeScriptToolsVersion>3.6</TypeScriptToolsVersion>
<TypeScriptBuildMode>true</TypeScriptBuildMode>
</PropertyGroup>
<ItemGroup>
<Compile Remove="ControllerServices\Catalog\UserServices\UserValidateService.cs" />
<Compile Remove="Controllers\SampleDataController.cs" />
<Compile Remove="Controllers\SelectDataController.cs" />
</ItemGroup>
<ItemGroup>
<Content Remove="wwwroot\favicon.ico" />
</ItemGroup>
<ItemGroup>
<None Remove="ClientApp\app\components\clients\clientList\client-detail-view.ts" />
<None Remove="ClientApp\app\components\clients\clientList\objectkeysValueConverter.ts" />
<None Remove="ClientApp\app\navmenu\ActiveRoute.ts" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FluentValidation" Version="8.5.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.5.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JobsLedger.CATALOG\JobsLedger.CATALOG.csproj" />
<ProjectReference Include="..\JobsLedger.DATA\JobsLedger.DATA.csproj" />
</ItemGroup>
<ItemGroup>
<TypeScriptCompile Include="ClientApp\app\components\clients\clientList\client-detail-view.ts" />
<TypeScriptCompile Include="ClientApp\app\navmenu\activeRoute.ts" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" />
</ItemGroup>
<Target Name="DebugRunWebpack" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('wwwroot\dist') ">
<!-- Ensure Node.js is installed -->
<Exec Command="node --version" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
</Exec>
<Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
<!-- In development, the dist files won't exist on the first run or when cloning to
a different machine, so rebuild them if not already present. -->
<Message Importance="high" Text="Performing first-run Webpack build..." />
<Exec Command="npm install" />
<Exec Command="npm ddp" />
<Exec Command="npm run webpack:dev" />
</Target>
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec Command="npm install" />
<Exec Command="npm ddp" />
<Exec Command="npm run webpack:$(Configuration)" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<!-- First, clean up previously generated content that may have been removed. -->
<ContentWithTargetPath Remove="@(ContentWithTargetPath)" Condition="!Exists('%(Identity)')" />
<_WebpackFiles Include="wwwroot\dist\**" />
<ContentWithTargetPath Include="@(_WebpackFiles->'%(FullPath)')" RelativePath="%(_WebpackFiles.Identity)" TargetPath="%(_WebpackFiles.Identity)" CopyToPublishDirectory="Always" />
</ItemGroup>
</Target>
Вот файл csproj для библиотеки классов базы данных CATALOG.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Http.Abstractions">
<HintPath>..\..\..\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0-preview5-19227-01\ref\netcoreapp3.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
и вот файл csproj для последней библиотеки классов DATA
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JobsLedger.CATALOG\JobsLedger.CATALOG.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Http.Abstractions">
<HintPath>..\..\..\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0-preview5-19227-01\ref\netcoreapp3.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Как мне заставить этот проект использовать инструменты EntityFramework 3.0.0 ??