Eliza Maria Ответов: 1

Проблема с миграцией БД в dotnet:"значение не может быть нулевым. (Параметр 'connectionstring')"


Привет,


Я использую VSCode и изо всех сил пытаюсь перенести свою базу данных с помощью ef, так как уже установил необходимые пакеты dotnet.Моя проблема заключается в том, что каждый раз, когда я пытаюсь сделать "
sudo dotnet ef migrations add InitialCreate
"он не завершит процесс, так как говорит, что у меня есть нулевой параметр connectionString(
System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
).Я дважды проверил свое строковое соединение с БД, которое выглядит следующим образом в моем appsettings.json:
"
"ConnectionStrings ": {
  "DataContext": "host=localhost;port=3306;user id=****;password=*******;database=*****;"
}
"
В классе Startup.cs у меня есть следующее:
public void ConfigureServices(IServiceCollection services)
       {

           var connectionString = Configuration.GetConnectionString("DataContext");

      services.AddDbContext<DataContext>(options => options.UseMySql(connectionString));
           services.AddControllersWithViews();

       }

Теперь я не понимаю, почему он не работает, так как имя правильное вместе с синтаксисом в файле appsettings.json.Я знаю, что MySql.Данные-не лучшее решение для миграции, поэтому вместо этого я использую pomelo.Это мой файл project.csproj:
<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration" Version="3.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
  </ItemGroup>

Любая помощь будет оценена по достоинству!

Что я уже пробовал:

Я попытался изменить код в Startup.cs следующим образом:
"
services.AddDbContext<DataContext>(options => options.UseMySql(Configuration.GetConnectionString("DataContext")))
"
Кроме этого,я не знаю, что еще я мог бы попробовать, так как соединение правильное и тот же код работал раньше...

1 Ответов

Рейтинг:
1

Eliza Maria

Хорошо,теперь я знаю, почему это не сработало.Один из пакетов, которые я установил в предыдущем проекте, не был в новом:

Microsoft.AspNet.Identity.EntityFramework

По-видимому, без этого миграция потерпит неудачу.