C # Проблема с DbContext: Аргумент 1: невозможно преобразовать «строку» в «Microsoft.EntityFrameworkCore.DbContextOptions» - PullRequest
0 голосов
/ 30 сентября 2019

У меня возникла проблема с DbContext. Я решил создать новый класс, который будет отвечать за соединения с базой данных.

public class PetAlertContext : DbContext
{
    public PetAlertContext() : base("PetAlert") { }

    public DbSet<Zwierze> Zwierzaki { get; set; }
        public DbSet<Osoba> Osoby { get; set; }
        public DbSet<Placowka> Placowki { get; set; }
        public DbSet<Ogloszenie> Ogloszenia { get; set; }
    }
}

Но у меня есть исключение рядом с именем базы:

Аргумент 1: невозможно преобразовать'string' to 'Microsoft.EntityFrameworkCore.DbContextOptions'.

Я обнаружил похожую проблему и ответ с некоторым кодом, подобным этому, но у меня есть небольшая проблема с пониманием этой конструкции.

Не могли бы вы помочь мне с этим?

//public PetAlertContext(string connectionString) : base(GetOptions(connectionString))
    //{
    //}

    //private static DbContextOptions GetOptions(string connectionString)
    //{
    //    return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options;
    //}

1 Ответ

3 голосов
/ 30 сентября 2019

Конструктор для Entity Framework Core не принимает в качестве параметра ни одной строки, он принимает экземпляр DbContextOptions. См. документацию здесь . В данный момент вы пытаетесь использовать конструктор EF6, который принимает в качестве параметра только строку подключения ( см. Здесь ). Код, который вы закомментировали в своем вопросе, показывает вам, как создать экземпляр экземпляра DbContextOptions, то есть, используя DbContextOptionBuilder согласно документации здесь . Итак, если вы используете базу данных SQL Server, вы можете использовать этот код.

...