обновление базы данных из консоли диспетчера пакетов в первой среде кода
Код Первой Среды
Я пытаюсь обновить базу данных из консоли диспетчера пакетов.Если мой класс домена изменится, я должен удалить и создать базу данных, вместо того, чтобы удалять базу данных, как я могу обновить базу данных.
Я уже пробовал, читая некоторые блоги в google.
команды
PM> Install-Package EntityFramework
-
С помощью этой команды я устанавливаю Entity Framework успешно.
PM> Enable-Migrations
-
С помощью этой команды он создал файл миграции в моем проекте.
PM> Update-Database
-
используя эту команду, я могу обновить таблицу, но у меня есть здесь.
укажите флаг "- Verbose " для просмотра инструкций SQL, применяемых к целевой базе данных.
Система.Данные.В sqlclient.SqlException (0x80131904): связанные с сетью или при установлении соединения с SQL Server произошла ошибка конкретного экземпляра. Сервер не найден или недоступен. Убедитесь в правильности имени экземпляра и в том, что SQL Server настроен на разрешение удаленных подключений.
сомнение-это здесь
укажите флаг "- 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.