×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "block"; document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
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.
Создаем новое консольное приложение на C#
Шаг 2.
Создаем модель (Empty EF Designer Model)
Шаг 3.
Сгенерируем C# код по модели
Шаг 4.
Сгенерируем Базу данных по модели
Шаг 5.
Проверяем как создалась наша База данных и таблица в Microsoft SQL Server
Шаг 6.
Пример "Загружаем данные из Базы данных используя C# код"
Шаг 1. Создаем новое консольное приложение
Создаем
новое консольное приложение на C#...
Шаг 2. Создаем модель (Empty EF Designer Model)
Нажимаем правой клавишей мыши на нашем приложении
ConsoleApp1
Выбираем
Add
→
New Item
→
ADO.NET Entity Data Model
→
Empty EF Designer Model
Нажимаем
Finish
Появится пустое окно создания модели
Нажимаем в меню
View
->
Toolbox
Добавим
Entity
(сущность).
Нажимаем правой клавишей мыши на окне модели →
Add New
→
Entity ...
Добавим свойства:
Name
Book
Чтобы добавить свойства нужно нажать правой клавишей мыши на окне
Book
→
Add New
→
Scalar 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)
+ Picture
Объявления
Объявления
•
Что такое 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