Ошибка миграции - не удается очистить литералы типа DirectConstructorBinding - PullRequest
0 голосов
/ 08 июня 2018

Я следую за курсом Pluralsight от Джули Лерман - EntityFramework Core 2: Getting Started.В этом курсе у нее 3 проекта.Первые два Data и Domain основаны на стандартной библиотеке .NET.Третий проект Web - это базовое веб-приложение .NET.

Я придерживался этой структуры.В Data я добавил один класс POCO под названием Client.

В Domain я добавил один класс с именем TestDbContext следующим образом:

public class TestDbContext : DbContext
{
    public DbSet<Client> Clients { get; set; }

    public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
    {

    }
}

Следуя ее примеру, я сделал следующее вStartup.cs моего Web проекта для добавления провайдера и строки подключения в DbContext.

public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc();
   services.AddDbContext<TestDbContext>(options =>
   {
       options.UseSqlServer(Configuration.GetConnectionString("TestConnection"));
   });
}

Наконец, я пытаюсь добавить миграцию в этот контекст.У меня есть Web проект, установленный как стартовый проект.В консоли диспетчера пакетов я набираю add-migration initial.

и затем получаю следующую ошибку: The current CSharpHelper cannot scaffold literals of type 'Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding'. Configure your services to use one that can.

В видео Джулии все это работало для нее, и пакет миграции был создан.Однако для меня - просто ошибка.Какие-нибудь подсказки относительно того, что может продолжаться?

Ответы [ 5 ]

0 голосов
/ 18 июля 2019

Это помогло мне:

-> Откройте файл WebApp .csproj и внесите следующие изменения:

<PropertyGroup>
  <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

Теперь становится:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>

-> Установите последнюю версию Microsoft.AspNetCore.App из пакета слепков в веб-приложение

-> Закомментируйте эту строку:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.9" />

-> Отредактируйте файл StartUp.cs, комментируяout "app.UseBrowserLink ()" -> Перекомпилировать решение

-> Добавить миграцию: добавление-миграция начальная

Счастливое кодирование ...

0 голосов
/ 04 июня 2019

Установить плагин Microsoft.EntityFrameworkCore.Design в проект базы данных (где dbcontext проект, созданный классом)

0 голосов
/ 13 июля 2018

Это помогло мне!

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

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference  Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.1.0- preview1-final" />
</ItemGroup>
</Project>
0 голосов
/ 23 сентября 2018

Добавьте 3 пакета с одинаковой версией из менеджера пакетов nuget

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.2" />
0 голосов
/ 09 июня 2018

Проверьте версию пакета вашего проекта в файле .csproj.Ранее у меня была такая же проблема для совпадения версий mitch AspNet Core и EntityFramework Core (я полагаю).Создание тех же самых работ для меня нормально.Найденное решение Здесь

Для меня сейчас.

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0-rc1-final" PrivateAssets="All" /> 
...