×
=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
Поиск
Программирование, разработка, тестирование
→
.NET Core
→
Entity Framework в приложении ASP.NET Core MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Посмотрели
8485
раз(а)
Entity Framework в приложении ASP.NET Core MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
последнее обновление: 27 февраля 2019
Entity Framework
предоставляет возможность работы с
Базой данных
через
C#
код.
Рассмотрим подход
Code First
(пишем
C#
код, а таблицы в
Базе данных
создаются автоматически по
C#
коду).
План (10 шагов)
Шаг 1.
Создаем новое приложение ASP.NET Core MVC
Шаг 2.
Добавляем библиотеку Entity Framework используя NuGet
Шаг 3.
Создаем соединиение с Базой данных Microsoft SQL Server в файле appsettings.json
Шаг 4.
Создаем папку Models и добавляем классы Book и BookContext
Шаг 5.
Добавляем сервис базы данных в файл Startup.cs
Шаг 6.
Инициализация Базы Данных на запуск программы (добавляем класс BooksInit в папку Models)
Шаг 7.
Вызов инициализации Базы Данных (файл Program.cs)
Шаг 8.
Исправим HomeController (файл Controllers/HomeController.cs)
Шаг 9.
Исправим представление (файл Views/Home/Index.cshtml)
Шаг 10.
Запускаем приложение
Шаг 1. Создаем новое приложение ASP.NET Core MVC
Создаем
новое приложение ASP.NET Core MVC
Шаг 2. Добавляем библиотеку Entity Framework используя NuGet
Для работы с баззой данных MS SQL Server через Entity Framework нам нужны
NuGet
пакеты:
Microsoft.EntityFrameworkCore.SqlServer
(для работы с базой данных)
Microsoft.EntityFrameworkCore.Tools
(утилита для создания базы данных)
Чтобы добавить пакеты нужно нажать:
Tools
→
NuGet Package Manager
→
Manage NuGet Packages for Solution...
На заметку!
Если мы работаем
с проектом
ASP.NET Core 2.1
то эти
пакеты по умолчаню уже добавлены
Шаг 3. Создаем соединиение с Базой данных Microsoft SQL Server в файле appsettings.json
Добавим соединение с базой данных
json
Файл
appsettings.json
{
"ConnectionStrings"
: {
"DefaultConnection"
:
"Server=EVGENI\MSSQLSERVER2012; Database=MyBooks; Trusted_Connection=True; MultipleActiveResultSets=true"
},
"Logging"
: {
"LogLevel"
: {
"Default"
:
"Warning"
}
},
"AllowedHosts"
:
"*"
}
На заметку!
•
Server=
EVGENIMSSQLSERVER2012
это имя сервера базы данных (SQL Server name). Сервер базы данных может находится локально или на другом компьютере. Имя сервера базы данных появляется при открытии
SQL Server Management Studio
(на картинке нарисовано).
•
Database=
MyBooks
это название базы данных. Если такое название не существует то новая база данных будет создана.
Шаг 4. Создаем папку Models и добавляем классы Book и BookContext
Создаем папку
Models
На папке
Models
нажимаем мышкой и создадим новый файл
В файле Models/Book.cs напишем код
C#
Файл
Book.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Threading.Tasks;
using
Microsoft.EntityFrameworkCore;
// Entity Framework Core
namespace
BookLibrary.Models
{
// контекст для работы с базой данных (добавление, удаление)
public
class
BookContext
: DbContext
{
public
DbSet<
Book
> Books { get; set; }
// конструктор
public
BookContext(DbContextOptions<BookContext> options) : base(options)
{
Database.EnsureCreated();
}
}
// данные для базы данных
public
class
Book
{
public
int
Id { get; set; }
public
string
Name { get; set; }
public
string
Author { get; set; }
}
}
Шаг 5. Добавляем сервис базы данных в файл Startup.cs
Новые добавленные строчки помеченные
синим
C#
Файл
Startup.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Threading.Tasks;
using
Microsoft.AspNetCore.Builder;
using
Microsoft.AspNetCore.Hosting;
using
Microsoft.AspNetCore.Http;
using
Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using
BookLibrary.Models;
using
Microsoft.EntityFrameworkCore;
// add for sql server (options => options.UseSqlServer(connection))
namespace
BookLibrary
{
public
class
Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public
IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public
void
ConfigureServices(IServiceCollection services)
{
// add db connection
string
connection = Configuration.GetConnectionString(
"DefaultConnection"
);
services.AddDbContext<BookContext>(options => options.UseSqlServer(connection));
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public
void
Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if
(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routes =>
{
routes.MapRoute(
name:
"default"
,
template:
"{controller=Home}/{action=Index}/{id?}"
);
});
//app.Run(async (context) =>
//{
// await context.Response.WriteAsync("Hello World!");
//});
}
}
}
Шаг 6. Инициализация Базы Данных на запуск программы (добавляем класс BooksInit в папку Models)
В файле Models/BooksInit.cs напишем код
C#
Файл
BooksInit.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Threading.Tasks;
namespace
BookLibrary.Models
{
public
class
BooksInit
{
public
static
void
Initialize(BookContext context)
{
if
(!context.Books.Any())
{
// добавляем книги
context.Books.AddRange(
new
Book
{
Name =
"Фантастическое путешествие"
,
Author =
"Айзек Азимов"
,
},
new
Book
{
Name =
"Неукротимая планета"
,
Author =
"Гарри Гаррисон"
,
},
new
Book
{
Name =
"Изучаем C#"
,
Author =
"Эндрю Стиллмен"
,
},
new
Book
{
Name =
"Мастер и Маргарита"
,
Author =
"Михаил Булгаков"
,
}
);
// сохраняем в базу данных
context.SaveChanges();
}
}
}
}
На заметку!
При первом
запуске программы в базе данных создадутся записи.
При втором
запуске программы и других запусках программы в базе данных новые записи создаваться не будут.
Шаг 7. Вызов инициализации Базы Данных (файл Program.cs)
Исправим файл Program.cs
C#
Файл
Program.cs
using
System;
using
System.Collections.Generic;
using
System.IO;
using
System.Linq;
using
System.Threading.Tasks;
using
Microsoft.AspNetCore;
using
Microsoft.AspNetCore.Hosting;
using
Microsoft.Extensions.Configuration;
using
Microsoft.Extensions.Logging;
using Microsoft.Extensions.DependencyInjection;
using
BookLibrary.Models;
namespace
BookLibrary
{
public
class
Program
{
public
static
void
Main(
string
[] args)
{
// CreateWebHostBuilder(args).Build().Run();
var host = CreateWebHostBuilder(args).Build();
using
(var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<BookContext>();
BooksInit.Initialize(context);
}
catch
(Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex,
"An error occurred while seeding the database."
);
}
}
host.Run();
}
public
static
IWebHostBuilder CreateWebHostBuilder(
string
[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
Шаг 8. Исправим HomeController (файл Controllers/HomeController.cs)
C#
Файл
HomeController.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Threading.Tasks;
using
Microsoft.AspNetCore.Mvc;
using BookLibrary.Models;
namespace
BookLibrary.Controllers
{
public
class
HomeController
: Controller
{
BookContext db;
public
HomeController(BookContext context)
{
db = context;
}
public
IActionResult Index()
{
return
View(db.Books.ToList());
}
}
}
Шаг 9. Исправим представление (файл Views/Home/Index.cshtml)
cshtml
Файл
Index.cshtml
@model IEnumerable
<BookLibrary.Models.Book>
@{
Layout = null;
}
<!DOCTYPE
html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Библиотека книг
</title>
</head>
<body>
<h3>
Книги
</h3>
<table
border=
"1"
>
<tr>
<th>
Название книги
</th>
<th>
Автор
</th>
</tr>
@foreach (
var
book
in
Model)
{
<tr>
<td>
@book.Name
</td>
<td>
@book.Author
</td>
</tr>
}
</table>
</body>
</html>
Шаг 10. Запускаем приложение
Нажимаем вверху на зеленый треугольник
Откроется страница в браузере и мы увидим
← Предыдущая тема
Встроенный контейнер IoC в ASP.NET Core
Следующая тема →
Telerik (Kendo UI) в ASP.NET Core MVC (подключаем Kendo js файлы используя NPM и Webpack)
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Объявления
Объявления
•
Что такое .NET Core ?
•
Создаем новое консольное приложение .NET Core
ASP.NET Core
•
Что такое ASP.NET Core ?
•
Создаем новое приложение ASP.NET Core
ASP.NET Core MVC
•
Создаем новое приложение ASP.NET Core MVC
•
Встроенный контейнер IoC в ASP.NET Core
База данных (Entity Framework) в ASP.NET Core MVC
•
Entity Framework в приложении ASP.NET Core MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Telerik (Kendo UI) в ASP.NET Core MVC
•
Telerik (Kendo UI) в ASP.NET Core MVC (подключаем Kendo js файлы используя NPM и Webpack)
Аутентификация (login/register/logout) в приложении ASP.NET Core MVC
•
Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC
Дополнительные темы, вопросы
•
Инсталлируем новую версию (.NET 6.0) для Visual Studio 2022. На заметку! .NET 6.0 не устанавливается и не работает для Visual Studio 2019
•
Инсталлируем новую версию (.NET Core 2.2) для Visual Studio 2019
•
Выбор между ASP.NET Core и ASP.NET ?
•
Перенос кода в .NET Core из .NET Framework
•
Error "unable to connect to web server "iis express" | ASP.NET Core | Visual Studio 2017
•
Error "This site can't be reached" when run ASP.NET Core application | Solution: Recreate the Self-Signed HTTPS Certificate for localhost in IIS Express
WWW сайты для изучения
•
Сайты для изучения ASP.NET Core
Ваши вопросы присылайте по почте:
info@dir.by