dir.by  
  Search  
Programming, development, testing
Entity Framework (EF5, EF6) для работы с базой данных на C#
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
  Looked at 9107 times    
 Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных 
last updated: 4 July 2018
Суть данного подхода состоит в том, что мы делаем модель в Visual Studio.
Автоматически по модели создаются:
C# классы
База данных
План (6 шагов)
Шаг 1. Создаем новое консольное приложение
Шаг 2. Создаем модель (Empty EF Designer Model)
Нажимаем правой клавишей мыши на нашем приложении ConsoleApp1
Выбираем AddNew ItemADO.NET Entity Data ModelEmpty EF Designer Model
Нажимаем Finish
Появится пустое окно создания модели
Нажимаем в меню View -> Toolbox
Добавим Entity (сущность).
Нажимаем правой клавишей мыши на окне модели → Add NewEntity ...
Добавим свойства:
Name
Book
Чтобы добавить свойства нужно нажать правой клавишей мыши на окне BookAdd NewScalar Property
Вот что получилось:
Scalar Property этот свойства на основе простейших типов int, float, string и т.д.
По умолчанию все добавляемые свойства имеют тип string.
Но мы можем изменить тип в окне свойств.

Поставим для свойства Price тип Int32
Для этого нажмем правой клавишей мыши на Price -> Properties
Шаг 3. Сгенерируем C# код по модели
Нажмем правой клавишей мыши на окне модели -> Add Code Generation Item ...
После этого в проекте Model1.edmx мы увидим
Model1.Context.tt которая содержит файл Model1.Context.cs
Model1.tt которая содержит файл Book.cs
  C#     Файл Book.cs
//----------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected ...
// Manual changes to this file will be overwritten ...
// </auto-generated>
//----------------------------

namespace ConsoleApp1
{
     using System;
     using System.Collections.Generic;
    
     public partial class Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
     }
}
  C#     Файл Model1.Context.cs
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected ...
// Manual changes to this file will be overwritten ...
// </auto-generated>
//------------------------------------------------------------------------------

namespace ConsoleApp1
{
     using System;
     using System.Data.Entity;
     using System.Data.Entity.Infrastructure;
    
     public partial class Model1Container : DbContext
     {
          public Model1Container()
               : base("name=Model1Container")
          {
          }
    
          protected override void OnModelCreating(DbModelBuilder modelBuilder)
          {
               throw new UnintentionalCodeFirstException();
          }
    
          public virtual DbSet<Book> BookSet { get; set; }
     }
}
Шаг 4. Сгенерируем Базу данных по модели
Нажмем правой клавишей мыши на окне модели -> Generate Database from Model ...
Откроется окно для подключения к Базе данных.
Нажмем на кнопку "New Connection"
Выберем Microsoft SQL Server
Server name:
Server name это имя сервера базы данных.
Имя сервера базы данных появляется при открытии SQL Server Management Studio...
Я написал EVGENIMSSQLSERVER2012
Select or enter a database name:
Пишем новое название базы данных (или выбираем существующую Базу данных)
Я написал название MyDatabase1
Нажимаем OK
После этого будет сгенерирован скрипт базы данных:
Нажмем Finish (Готово).
Откроется файл скрипта User.edmx.sql.
  Файл Model1.edmx.sql
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, 2012 and Azure
-- --------------------------------------------------
-- Date Created: 07/04/2018 11:24:50
-- Generated from EDMX file: D:\\ConsoleApp1\Model1.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [MyDatabase1];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------



-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------



-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------


-- Creating table 'BookSet'
CREATE TABLE [dbo].[BookSet] (
[Id] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(max) NOT NULL,
[Price] int NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------


-- Creating primary key on [Id] in table 'BookSet'
ALTER TABLE [dbo].[BookSet]
ADD CONSTRAINT [PK_BookSet]
PRIMARY KEY CLUSTERED ([Id] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------
Нам надо будет запустить этот скрипт.
Для этого нажмем в верхнем левом углу на зеленую кнопку
Visual Studio нам покажет об успешном создании Базы данных.
Шаг 5. Проверяем как создалась наша База данных и таблица в Microsoft SQL Server
Note! You must have Microsoft SQL Server installed. If you don't have it, then need to download and install Microsoft SQL Server ...

Note! You must have SQL Server Management Studio installed. If you don't have it, then need to download and install SQL Server Management Studio ...

To open SQL Server Management Studio, we click on the icon on the desktop:
 
A window will appear and press the "Connect" button:
 
 
After 20 seconds, we will see that SQL Server Management Studio is loaded:
Видим, что автоматически:
• создалась новая база данных MyDatabase1
• создалась новая таблица BookSet
Шаг 6. Пример "Загружаем данные из Базы данных используя C# код"
Добавим в файл Program.cs выделенные строчки
  C#  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
     class Program
     {
          static void Main(string[] args)
          {
               using (Model1Container db = new Model1Container())
               {
                    // Добавляем данные
                    db.BookSet.Add(new Book() { Name = "Граф Монтекристо", Price = 123 });
                    db.BookSet.Add(new Book() { Name = "Властелин колец", Price=267 });
                    db.BookSet.Add(new Book() { Name = "Три кота", Price = 125 });

                    // Сохраняем данные в Базу данных
                    db.SaveChanges();

                    // показываем данные из Базы Данных
                    foreach(Book book in db.BookSet)
                    {
                         Console.WriteLine(book.Id + " " + book.Name + " " + book.Price);
                    }
               }
          }
     }
}
Результат примера
 
← Previous topic
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
 
Next topic →
Перебор данных в Entity Framework
 
Your feedback ... Comments ...
   
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  
Яндекс.Метрика