dir.by  
  Поиск  
Компьютер, программы
Entity Framework (EF5, EF6) for working with a C database#
 Миграция Базы Данных в Entity Framework 
посмотрели 14810 раз
обновлено: 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
Performing a Database Migration to Entity Framework (if someone has already made a cs migration file, and I want to update the database on my computer, I perform the migration, that is, call EntityFramework\Update-Database)
 
Next topic →
SQL Commands in 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)

  Объявления  
  Объявления  
 
What is Entity Framework?
Types in Entity Framework
Entity Framework Type Conversion, Table Naming Conventions
Foreign Key and Cascade Deletion
DateTime & Date & Time Only in the Entity Framework
Code First
Code First. We"re writing a C# class. Entity Framework uses our C# class → to create and populate a table in the database
Auto Code First. Entity Framework creates a C# class from an existing table in the → database
Database First
Database First. Entity Framework creates a C# class from an existing table in the → database
Model First
Model First. We create a model in Visual Studio. Using the Entity Framework model, → creates C# classes and a Database
Working with data
Iterating over data in the Entity Framework
Adding Data to the Entity Framework
Modifying (editing) data in the Entity Framework
Deleting data in the Entity Framework
Database initialization and migration
Initialize the database in the Entity Framework. DropCreateDatabaseAlways allows you to repopulate the database with each new run
Performing a Database Migration to Entity Framework (if someone has already made a cs migration file, and I want to update the database on my computer, I perform the migration, that is, call EntityFramework\Update-Database)
Creating and performing a Database migration to Entity Framework (I changed the c# class, then call EntityFramework\add-migration, i.e. the cs file with the migration code is automatically added to the project, then call EntityFramework\Update-Database, i.e. the migration file is executed and the database is changed)
SQL in Entity Framework
SQL Commands in Entity Framework
Transactions in the Entity Framework
Managing Transactions in the Entity Framework
Additional topics, questions
What is <connectionStrings> a .config file for Entity Framework (EF5, EF6)
When EntityFrameworkUpdate-Database is called, the error "System.Data.SqlClient.SqlException (0x80131904) is thrown. A network-related or instance-specific error occurred while establishing a connection to SQL Server. "
When calling EntityFrameworkUpdate-Database, the error "Your startup project "..." doesn"t reference Microsoft.EntityFrameworkCore.Design"
WWW Sites to Learn Entity Framework
Sites to learn Entity Framework

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