обновление базы данных из консоли диспетчера пакетов в первой среде кода

Код Первой Среды

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

Я уже пробовал, читая некоторые блоги в google.

команды

PM> Install-Package EntityFramework
  1. С помощью этой команды я устанавливаю Entity Framework успешно.

     PM> Enable-Migrations
    
  2. С помощью этой команды он создал файл миграции в моем проекте.

     PM> Update-Database
    
  3. используя эту команду, я могу обновить таблицу, но у меня есть здесь.

укажите флаг "- Verbose " для просмотра инструкций SQL, применяемых к целевой базе данных. Система.Данные.В sqlclient.SqlException (0x80131904): связанные с сетью или при установлении соединения с SQL Server произошла ошибка конкретного экземпляра. Сервер не найден или недоступен. Убедитесь в правильности имени экземпляра и в том, что SQL Server настроен на разрешение удаленных подключений.

сомнение-это здесь

иногда он может обновляться, если только одно поле изменяется в поко класса. Например, я обновил больше количества класса домена ,как я могу обновить базу данных из пакета консоль диспетчера. Есть Идеи ?

5 ответов


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

Add-Migration Version_Name -ConnectionString "data source=server_name;initial catalog=db_name;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" -ConnectionProviderName "System.Data.SqlClient" -Verbose

похоже, у вас несколько проблем. Что касается нежелания удалять и воссоздавать базу данных, это определяется инициализатором базы данных. Если вы хотите использовать миграции, измените его на MigrateDatabaseToLatestVersion. http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

во-вторых, не имеет значения, сколько полей вы меняете, они будут свернуты в одну миграцию на основе изменения после последней миграции.

в-третьих, как указывали другие, кажется, у вас есть проблема со строкой подключения. Хотя вы можете добавить, что для добавления-миграции и обновления-миграции я бы, вероятно, исправить это в приложении. Я устанавливаю свой в конструкторе моего контекста, который указывает на мой файл конфигурации (web.config для ASP.NET).

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext()
        : base("MyConnection", throwIfV1Schema: false)
    {
        Database.SetInitializer<ApplicationDbContext>(new MigrateDatabaseToLatestVersion<ApplicationDbContext, MyObjextContextMigration>());
    }
    ...

Я

Enable-Migrations -EnableAutomaticMigrations -Force

затем

Update-Database

и это перенесло мои изменения (дополнительные столбцы) при сохранении моих тестовых данных. Я думаю, что это самый ленивый вариант при прототипировании.


вам нужно обновить SSDT перейдите в меню Сервис> расширение и обновления > обновления > SQL server data tools


куда поместить строку подключения?

вам не нужно указывать его с каждой команды в консоли диспетчера пакетов. Вы можете положить его в appsettings.в JSON в проекте, где находится ваш класс DbContext (чтение "из производного класса DbContext").

{
  "ConnectionStrings": {
    "MyConnectionString": "Server=yourServer;Port=5432;Database=yourDatabase;User Id=yourDatabaseUsername;Password=yourDatabasePassword;"
  }
}

Он будет использоваться для миграции.

важно: если у вас несколько проектов в вашем решении, вы должны выберите проект в раскрывающемся списке "проект по умолчанию" (в консоли диспетчера пакетов) и вы должны установите проект в качестве проекта запуска (в обозревателе решений).

неспособность сделать это может привести к неправильным appsettings.json для использования с неправильной / другой connectionstring.

Это был мой опыт работы с EF Core 2.1 и, вероятно, относится к другим версиям EF.