visual studio msql server

У меня в код sqlconnection = new sqlconnection(@"Data Source...) При опубликовании приложении и переносе его на другой компьютер, нужно будет в ручную создавать БД на другом компьютере?


Ответы (1 шт):

Автор решения: Max S

Если использовать EntityFrameworkCore, то у инстанса контекста базы данных DbContext есть свойство Database с методом EnsureCreated(), который делает следующее:

  • Если база данных существует и содержит таблицы, никакие действия не предпринимаются. Для обеспечения совместимости схемы базы данных с моделью Entity Framework ничего не делается.
  • Если база данных существует, но не содержит таблиц, то для создания схемы базы данных используется модель Entity Framework.
  • Если база данных не существует, создается база данных, а для создания схемы базы данных используется модель Entity Framework.

Пример:

public class MyDbContext : DbContext
{
    // описание модели

    public ApplicationContext() => Database.EnsureCreated();

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    { 
       optionsBuilder.UseSqlServer(/* строка подключения */);
    }
}

В старых версиях EF для полного .NET Framework тоже есть подобный метод CreateIfNotExists. Пример:

class MyDbContext : DbContext
{
    // описание модели

    public MyDbContext ()
        :base(/* строка подключения */)
    {
       Database.CreateIfNotExists();
    }
}
→ Ссылка