add-Migration Error Ни один поставщик базы данных не был настроен для этого DbContext - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь добавить миграцию в DbContext,

add-migration initial -verbose

Я получаю сообщение об ошибке

Для этого DbContext не настроен поставщик базы данных.Поставщик может быть настроен путем переопределения метода DbContext.OnConfiguring или с помощью AddDbContext в поставщике службы приложений.Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает объект DbContextOptions в своем конструкторе и передает его базовому конструктору для DbContext.

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

  1. Домен (Poco Classess)
  2. Репозиторий (.Net Core 2.1, EntitiFrameworkCore 2.1.4)
  3. RepositoryTest

вот мой класс DataContext

 public class DataContext:DbContext
    {
        public DataContext(DbContextOptions<DataContext> option) : base(option)
        {

        }

        public DataContext()
        {

        }

    public DbSet<User> User { get; set; }
    public DbSet<Cart> Cart { get; set; }
    public DbSet<CatalogItem> CatalogItem { get; set; }
 }

конструктор с объектом DbContextOptions уже существует.

в чем может быть проблема?

и воткласс в тестовом проекте.

 public class CustomerRepositoryIntegrationTest
    {
        [Fact]
        public void should_add_customer()
        {
            //Arrange
            var option = new DbContextOptionsBuilder<DataContext>()
            .UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Database=ecommerce;Integrated Security=SSPI").Options;

            //Act
            using (DataContext dataConext = new DataContext(option))
            {

                dataConext.Database.Migrate();
                customer actual = new Customer()
                dataConext.Customer.Add(actual);
                dataConext.SaveChanges();

                var expected = dataConext.Customer.FirstOrDefault();

                //Assert
                expected.Should().BeEquivalentTo(expected);
            }


            //Assert
        }
    }

1 Ответ

0 голосов
/ 21 октября 2018

создайте класс, который реализует IDesignTimeDbContextFactory в тестовом проекте и установите тестовый проект в качестве запускаемого проекта

public class TemporaryDataContextFactory : IDesignTimeDbContextFactory<DataContext>
{
    public DataContext CreateDbContext(string[] args)
    {
        var option = new DbContextOptionsBuilder<DataContext>()
        .UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Database=IbReport;Integrated Security=SSPI").Options;
        return new DataContext(option);
    }
}
...