Инициализация базы данных это когда при запуске приложения
наша база данных очищается и заполняется нашими значениями.
Наследование от класса
DropCreateDatabaseAlways позволяет при каждом запуске приложения заполнять базу данных заново.
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 потому что,
он вызывается только один раз за все время работы нашего приложения и отвечает за соответсвующую таблицу в базе данных.