dir.by  
  Search  
Programming, development, testing
Entity Framework (EF5, EF6) для работы с базой данных на C#
Создание и выполнение миграции Базы Данных в Entity Framework (я поменял c# класс, потом вызываю EntityFramework\add-migration т.е. автоматически добавляется в проект cs файл с кодом миграции, потом вызываю EntityFramework\Update-Database т.е. выполняется файл миграции и меняется база данных)
  Looked at 12043 times       Comments 1  
 Last Comment: (14 November 2019 9:33) Если появляется ошибка в консоли при добавлении... read...       Write a comment...
 Миграция Базы Данных в Entity Framework 
last updated: 13 May 2020
Миграция - это изменение базы данных. То есть:
• добавление, удаление, изменение колонок в базе данных
• добавление новых таблиц в базе данных

В каких случаях применяется миграция Базы Данных:
• при изменении сущности (класса описывающего таблицу базы данных). Cущности содержатся в контексте данных.
План (6 шагов)
Шаг 1. Создаем новое приложение
Шаг 2. Напишем код
  C#     В файл Program.cs добавили код выделенные синим цветом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data.Entity;

namespace ConsoleApplication1
{
     // сущность (соответствует таблице в базе данных)
     public class User
     {
          public int Id { get; set; }
          public int FullName { get; set; }
     }


     // сущность (соответствует таблице в базе данных)
     public class Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
          public int Author { get; set; }
     }

     // контекст данных
     class UserContext : DbContext
     {
          public UserContext() : base("MyConnection1")
          { }

          public DbSet<Book> Books { get; set; }
          public DbSet<User> Users { get; set; }
     }

     // вход программы
     class Program
     {
          static void Main(string[] args)
          {
               // add data
               using (UserContext db = new UserContext())
               {
                    // показываем данные
                    foreach(var item in db.Books)
                    {
                         Console.WriteLine(item.Name);
                    }
               }
          }
     }
}
При запуске примера (чтение данных из базы данных) возникает ошибка!
Ошибка! Unhandled Exception: System.InvalidOperationException: The model backing the 'UserContext' context has changed since the database was created.
Шаг 3. Создаем миграцию: enable-migrations
Нажимаем в меню: ToolsNuGet Package ManagerPackage Manager Console
Вводим команду
PM>
enable-migrations
Шаг 4. Добавляем миграцию (создание cs файла): entityframework\add-migration
Нажимаем в меню: Tools → NuGet Package Manager → Package Manager Console и вводим команду
PM>
EntityFramework\Add-Migration
или
EntityFramework6\Add-Migration
это зависит от версии Entity Framework

нажимаем ввод и нужно ввести название (файл миграции с таким названием будет создан):
  Command Prompt (Win Console)  
Name: Schema_v04
нажимаем ввод
Видим, что в папке Migrations добавился файл 201903010912485_Schema_v04.cs с миграцией.
  C#     Файл 201903010912485_Schema_v04.cs
namespace ConsoleApplication1.Migrations
{
     using System;
     using System.Data.Entity.Migrations;

     public partial class InitialCreate1 : DbMigration
     {
          public override void Up()
          {
               CreateTable(
                    "dbo.Users",
                    c => new
                         {
                              Id = c.Int(nullable: false, identity: true),
                              FullName = c.Int(nullable: false),
                         })
                    .PrimaryKey(t => t.Id);

               AddColumn("dbo.Books", "Author", c => c.Int(nullable: false));
          }

          public override void Down()
          {
               DropColumn("dbo.Books", "Author");
               DropTable("dbo.Users");
          }
     }
}
В миграции определяются два метода: Up() и Down().
В методе Up с помощью вызова метода AddColumn добавляется новый столбец в уже имеющуюся таблицу.
Метод Down удаляет столбец на случай, если они существуют.

Фактически эти методы равнозначны выражению ALTER в языке SQL, которое меняет структуру базы данных и ее таблиц.
Шаг 5. Выполняю миграцию (создание таблиц в базе данных): EntityFramework\Update-Database
Нажимаем в меню: Tools → NuGet Package Manager → Package Manager Console и вводим команду
PM>
EntityFramework\Update-Database
или
EntityFramework6\Update-Database
это зависит от версии Entity Framework

нажимаем ввод и получим результат:
Шаг 6. Проверяем как обновилась База данных в Microsoft SQL Server
Открываем SQL Server Management Studio
Видим что добавилась новая колонка Auithor для таблицы Books
Видим что добавилась новая таблица Users
 
← Previous topic
Выполнение миграции Базы Данных в Entity Framework (если уже кто-то раньше сделал cs файл миграции, а мне хочется обновить у себя на компютере базу данных я выполняю миграцию то есть вызываю EntityFramework\Update-Database)
 
Next topic →
SQL команды в Entity Framework
 
Your feedback ... 1 Comments
AFs
14 November 2019 9:33
Если появляется ошибка в консоли при добавлении миграции. Там где Any CPU и у вас стоит x64, меняйте на x86.
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
Что такое Entity Framework?
Типы в Entity Framework
Соглашения по преобразование типов, наименованию таблиц в Entity Framework
Внешний ключ (Foreign Key) и каскадное удаление
DateTime & только Date & только Time в Entity Framework
Code First
Code First. Мы пишем C# класс. Entity Framework по нашему C# классу → создает и заполняет таблицу в базе данных
Auto Code First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Database First
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Model First
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
Работа с данными
Перебор данных в Entity Framework
Добавление данных в Entity Framework
Изменение (редактирование) данных в Entity Framework
Удаление данных в Entity Framework
Инициализация и миграция базы данных
Инициализация базы данных в Entity Framework. DropCreateDatabaseAlways позволяет при каждом новом запуске заполнять базу данных заново
Выполнение миграции Базы Данных в Entity Framework (если уже кто-то раньше сделал cs файл миграции, а мне хочется обновить у себя на компютере базу данных я выполняю миграцию то есть вызываю EntityFramework\Update-Database)
Создание и выполнение миграции Базы Данных в Entity Framework (я поменял c# класс, потом вызываю EntityFramework\add-migration т.е. автоматически добавляется в проект cs файл с кодом миграции, потом вызываю EntityFramework\Update-Database т.е. выполняется файл миграции и меняется база данных)
SQL в Entity Framework
SQL команды в Entity Framework
Транзакции в Entity Framework
Управление транзакциями в Entity Framework
Дополнительные темы, вопросы
Что такое <connectionStrings> в .config файле для Entity Framework (EF5, EF6)
При вызове EntityFramework\Update-Database появляется ошибка "System.Data.SqlClient.SqlException (0x80131904). A network-related or instance-specific error occurred while establishing a connection to SQL Server."
При вызове EntityFramework\Update-Database появляется ошибка "Your startup project '...' doesn't reference Microsoft.EntityFrameworkCore.Design"
WWW сайты для изучения Entity Framework
Сайты для изучения Entity Framework

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика