dir.by  
  Поиск  
Компьютер, программы
Entity Framework (EF5, EF6) for working with a C database#
 Инициализация базы данных в Entity Framework 
посмотрели 10432 раз
обновлено: 2 Augusta 2018
Инициализация базы данных это когда при запуске приложения наша база данных очищается и заполняется нашими значениями.
Наследование от класса DropCreateDatabaseAlways позволяет при каждом запуске приложения заполнять базу данных заново.
Шаг 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 Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
     }

     // Контекст данных
     class UserContext : DbContext
     {
          static UserContext()
          {
               Database.SetInitializer<UserContext>(new UserContextInit());
          }


          public UserContext() : base("MyConnection1")
          { }

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

     // Инициализация
     class UserContextInit : DropCreateDatabaseAlways<UserContext>
     {
          protected override void Seed(UserContext context)
          {
               // создаем объекты Book
               context.Books.Add(new Book { Name = "Граф Монтекристо", Price = 123 });
               context.Books.Add(new Book { Name = "Властелин колец", Price = 267 });
               context.Books.Add(new Book { Name = "Три кота", Price = 125 });

               // сохраняем
               context.SaveChanges();
          }
     }


     class Program
     {
          static void Main(string[] args)
          {
               // create context
               using (UserContext db = new UserContext())
               {
                    // показываем данные
                    foreach(var item in db.Books)
                    {
                         Console.WriteLine(item.Name);
                    }
               }
          }
     }
}
Результат примера
Объяснение!
Инициализация (заполнение базы данных значениями) происходит в методе Seed.

Чтобы очистилась база данных и запустилась инициализация мы должны создать объект класса UserContextInit и вызвать SetInitializer.

Мы вызываем Database.SetInitializer(new UserContextInit()) в статическом конструкторе класса UserContext потому что,
он вызывается только один раз за все время работы нашего приложения и отвечает за соответсвующую таблицу в базе данных.
 
← Previous topic
Deleting data in the Entity Framework
 
Next 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)
 
Your feedback ... 1 Comments
Дима
7 January 2020 3:23
Спасибо, всё подробно и доступно описано.
   
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