×
=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#
→
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Looked at
9225
times
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
last updated: 4 July 2018
Database First
это самый первый подход, который появился в
Entity Framework
.
Database First
создает
C# классы
по готовым таблицам в
Базе данных
План (6 шагов)
Шаг 1.
Создаем новое консольное приложение на C#
Шаг 2.
Создаем таблицу "Book" в Базе данных в SQL Server Management Studio...
Шаг 3.
Запускаем Database First (EF Designer from database)
Шаг 4.
Смотрим что добавилось
Шаг 5.
Пример "Загружаем данные из Базы данных используя C# код"
Шаг 6.
Вывод
Шаг 1. Создаем новое консольное приложение
Создаем
новое консольное приложение на C#...
Шаг 2. Создаем таблицу в Базе данных
Создаем
таблицу "Book" в Базе данных в SQL Server Management Studio...
Шаг 3. Запускаем Database First (EF Designer from database)
Нажимаем правой клавишей мыши на нашем приложении
ConsoleApplication1
Выбираем
Add
→
New Item
→
ADO.NET Entity Data Model
→
EF Designer from database
Раскроем
Tables
это все таблицы, имеющиеся в базе данных. В моем случае имеется только одна таблица Book. Отметим все подузлы в ветке
Tables
.
В поле
Model Namespace
установим любое имя (я использую по умолчанию). Это имя
соединения...
Шаг 4. Смотрим что добавилось
У нас сгенерировалась
модель
(Model1.edmx) и добавилась в проект.
Модель сгенерировалась по выбранной
Базе данных
.
Visual Studio
отобразила нам схему модели (на картинке).
В моем случае есть только одна таблица
Book
, поэтому на схеме отображается только одна сущность
Book
.
Посмотрим какие файлы создались
В проект добавилась новая папка
Model1.edmx
с файлами:
Book.cs
Entity Framework утилита
создала новый класс
Book
для получения значений из
Базы данных
Model1.Context.cs
Для подключения и работой с
Базой данных
нам нужен
контекст данных
это класс
DbContext
.
Entity Framework
создала новый класс
MyDatabase1Entities
отнаследованный от класса
DbContext
В файле
"App.config"
добавились строчки для соединения с
Базой данных
<
connectionStrings
>
<add name="
MyDatabase1Entities
" connectionString="data source=EVGENI;initial catalog=MyDatabase1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<
/connectionStrings
>
Читать подробнее
<connectionStrings> в .config файле...
Добавились файлы описывающие таблицы в Базе даных (то есть схема Базы данных):
Model1.Designer.cs
Model1.edmx.diagram
Model1.tt
Model1.Context.tt
C#
Файл
Book.cs
//---------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior
// in your application.
// Manual changes to this file will be overwritten if the code
// is regenerated.
// </auto-generated>
//---------------------------------------------
namespace
ConsoleApplication2
{
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 behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//----------------------------------------------------
namespace
ConsoleApplication2
{
using
System;
using
System.Data.Entity;
using
System.Data.Entity.Infrastructure;
public
partial
class
MyDatabase1Entities
:
DbContext
{
public
MyDatabase1Entities()
: base(
"name=MyDatabase1Entities"
)
{
}
protected
override
void
OnModelCreating(DbModelBuilder modelBuilder)
{
throw
new
UnintentionalCodeFirstException();
}
public
virtual
DbSet<Book> Books { get; set; }
}
}
Шаг 5. Пример "Загружаем данные из Базы данных используя C# код"
Добавим в файл
Program.cs
выделенные строчки
C#
Файл Program.cs
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 (
MyDatabase1Entities
db =
new
MyDatabase1Entities
())
{
foreach (
Book
book
in
db.Books)
Console.WriteLine(book.Id +
" "
+ book.Name +
" "
+ book.Price);
}
}
}
}
На заметку!
класс
Book
содержится в сгенерированном файле
Book.cs
класс
MyDatabase1Entities
содержится в сгенерированном файле
Model1.Context.cs
Результат примера
Шаг 6. Вывод
Подход
Database First
похож с
Auto Code First
.
В подходе
Database First
создаются файлы:
В подходе
Auto Code First
создаются файлы:
•
Book.cs
•
Model1.Context.cs
• В файле
App.config
добавились строчки для соединения с Базой данных
Добавились файлы модели (схемы) Базы даных
:
• Model1.Context.tt
• Model1.Designer.cs
• Model1.edmx.diagram
• Model1.tt
•
Book.cs
•
Model1.cs
• В файле
App.config
добавились строчки для соединения с Базой данных
Я бы посоветовал для готовой
Базы данных
использовать
Auto CodeFirst
, и не использовать
Database First
.
Так как
Database First
добавляет лишние файлы (схему Базы данных).
А также при наличии изменений в
Базе данных
, измнения в C# файле проще вносить при подходе
Auto CodeFirst
← Previous topic
Auto Code First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Next topic →
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
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