dir.by  
Programming, development, testing
ASP.NET MVC (web сайт на архитектуре Model-View-Controller)
Entity Framework в приложении ASP.NET MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
  Looked at 7904 times    
 Entity Framework в приложении ASP.NET MVC (Code First) 
last updated: 13 January 2019
Entity Framework предоставляет возможность работы с Базой данных через C# код.
Рассмотрим подход Code First (пишем C# код, а таблицы в Базе данных создаются автоматически по C# коду).
План (7 шагов)
Шаг 1. Создаем новый ASP.NET MVC проект
Шаг 2. Добавляем библиотеку Entity Framework используя NuGet
Нажимаем в меню: ToolsNuGet Package ManagerManage NuGet Packages for Solution...
Нажимаем кнопку "Install"
Нажимаем кнопку "OK"
Let's look at что подключилось >> ...
Шаг 3. Установка Microsoft SQL Server (для хранения базы данных)
Мы будем использовать Microsoft SQL Server для хранения базы данных.
Если у Вас не установлена нужно установить Microsoft SQL Server 2012... (или другую версию)
Шаг 4. Создаем соединиение с Базой данных Microsoft SQL Server в файле Web.config
Добавляем соединение <connectionStrings>...</connectionStrings> к Базе данных в файле Web.config
Новые добавленные строчки помеченные синим
  Файл: Web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
     For more information on how to configure your ASP.NET application, please visit
     http://go.microsoft.com/fwlink/?LinkId=301880
     -->
<configuration>
    
     <configSections>
          <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
          <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     </configSections>
    
     <appSettings>
          <add key="webpages:Version" value="3.0.0.0" />
          <add key="webpages:Enabled" value="false" />
          <add key="ClientValidationEnabled" value="true" />
          <add key="UnobtrusiveJavaScriptEnabled" value="true" />
     </appSettings>

     <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
     </system.web>

     <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
               <dependentAssembly>
                    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
                    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
               </dependentAssembly>
               <dependentAssembly>
                    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
                    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
               </dependentAssembly>
               <dependentAssembly>
                    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
                    <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
               </dependentAssembly>
          </assemblyBinding>
     </runtime>

     <connectionStrings>
          <add name="MyConnection1" connectionString="Data Source=EVGENI\MSSQLSERVER2012;Initial Catalog=MyDatabase1;Integrated Security=True;" providerName="System.Data.SqlClient" />
     </connectionStrings>


     <entityFramework>
          <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
               <parameters>
                    <parameter value="mssqllocaldb" />
               </parameters>
          </defaultConnectionFactory>
          <providers>
               <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          </providers>
     </entityFramework>

</configuration>
На заметку!
Initial Catalog=MyDatabase1 это название базы данных. Если такое название не существует то новая база данных будет создана.
name="MyConnection1" пишем любой текст это имя соединения. Это имя соединения будем использовать в C# классах.
Data Source=EVGENIMSSQLSERVER2012 это имя сервера базы данных (SQL Server name). Сервер базы данных может находится локально или на другом компьютере. Имя сервера базы данных появляется при открытии SQL Server Management Studio (на картинке нарисовано).
Шаг 5. Добавим класс Book и класс UserContext для работы с Базой данных
Нажмем правой клавишей мыши на папку "Models"AddNew Item
Для подключения к базе данных через Entity Framework, нам нужен посредник - контекст данных.
Контекст данных представляет собой класс, производный от класса DbContext.
Контекст данных содержит одно или несколько свойств типа DbSet, где T представляет тип объекта, хранящегося в базе данных

Класс UserContext это наш контекст данных
Наш контекст данных создаст базу данных MyDatabase1 (если ее не существует)
Класс Book создаст таблицу Books и заполнит данными.

Новые добавленные строчки помеченные синим
  C#     Файл: UserContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Data.Entity;

namespace WebApplication2.Models
{
     public class Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
     }


     public class UserContext : DbContext
     {
          public UserContext() : base("MyConnection1")
          {
          }

          public DbSet<Book> Books { get; set; }
     }

}
В файле Controllers\HomeController.cs напишем код создание и заполнение базы данных.
  C#     Файл: HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using WebApplication2.Models;

namespace WebApplication2.Controllers
{
     public class HomeController : Controller
     {
          // GET: Home
          public ActionResult Index()
          {
               // add data
               using(UserContext db = new UserContext())
               {
                    // создаем объекты Book
                    Book book1 = new Book { Name = "Граф Монтекристо", Price = 123 };
                    Book book2 = new Book { Name = "Властелин колец", Price = 267 };
                    Book book3 = new Book { Name = "Три кота", Price = 125 };

                    // добавляем объекты Book в контекст данных
                    db.Books.Add(book1);
                    db.Books.Add(book2);
                    db.Books.Add(book3);

                    // сохраняем контекст данных в базу данных
                    db.SaveChanges();
               }


               return View();
          }
     }
}
Шаг 6. Запускаем ASP.NET MVC приложение
Нажимаем вверху на зеленый треугольник
Приложение запустилось
 
После запуска приложения, выполнится C# код который:
• создаст Базу данных "MyDatabase1" (если такой нет)
• создаст таблицу Books (если такой нет)
• добавит значения в таблицу Books
        Name="Граф Монтекристо" Price=123
        Name="Властелин колец"     Price=267
        Name="Три кота"                   Price=125
Шаг 7. Проверяем как создалась наша База данных и таблица в 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:
 Смотрим значения в таблице в SQL Server Management Studio 
Шаг 1. Открываем SQL Server Management Studio
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:
Шаг 2. Смотрим значения в таблице
Раскрываем базу данных MyDatabase1
 
Нажимаем правой клавишей мыши на таблице dbo.Books и нажимаем Select Top 1000 Rows
 
Смотрим на значения:
Видим, что автоматически:
• создалась новая база данных MyDatabase1 (если такой не было)
• создалась новая таблица Books (если такой не было)
• в таблице Books добавились значения
Таблица Books
Id
Name
Price
1
Граф Монтекристо
123
2
Властелин колец
267
3
Три кота
125
На заметку!
Если запустим программу второй раз, то увидим что в таблице Books уже 6 строчек.
Если запустим программу третий раз, то увидим что в таблице Books 9 строчек.
Если запустим программу четвертый раз, то увидим что в таблице Books 12 строчек.
То есть если таблица Books существет, то при каждом запуске программы добавляются 3 строчки.
 
← Previous topic
Объект Ajax (это класс AjaxExtensions) в ASP.NET МVС
 
Next topic →
Что такое аутентификация (login/register/logout) в ASP.NET MVC ?
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
  Объявления  
  Объявления  
 
Что такое MVC в ASP.NET ?
Создаем новое приложение ASP.NET MVC
Контроллер (Controller)
Передаем данные из контроллера в представление в ASP.NET MVC. Используем ViewBag, ViewData, TempData, Model (строго типизированное представление)
Представление (View)
Что такое View (представление) и операторы Razor в ASP.NET MVC
Создаем переменную и выводим на экран во View в ASP.NET MVC
@using внутри View в ASP.NET MVC
@foreach(var item in arr) {...} внутри View в ASP.NET MVC
@DateTime.Now внутри View в ASP.NET MVC
Как узнать имя контроллера внутри View в ASP.NET MVC
Отображаем [DateTime | только Date | только Time] в нужном формате в ASP.NET MVC
Разновидности представлений (View)
Строго типизированное представление (Strongly-typed-view) в ASP.NET MVC
...
Мастер представление (Master View) с использованием @RenderBody() в ASP.NET MVC
Мастер представление (Master View) с использованием @RenderBody() и дополнительных секций @RenderSection в ASP.NET MVC
...
Частичное представление (Partial View) в ASP.NET MVC. Встраиваем частичное представление @Html.Partial("My1") и @{ Html.RenderPartial("My1");}
При нажатии submit внутри partial view происходит ajax вызов метода controller. Метод controller должен возвращать PartialView(model) | ASP.NET MVC
...
Строго типизированное частичное представление (Strongly-typed partial view) в ASP.NET MVC
Создаем папку ViewModels. Это хороший стиль программирования для передачи данных из Controller во View
Создаем папку ViewModels. Создаем свой класс в папке ViewModels. Это хороший стиль программирования для передачи данных из Controller во View. Web приложение ASP.NET MVC
Атрибуты. Используем атрибуты во ViewModels(чтобы показать кнопки, combo в представлении). Используем атрибуты в Controller (чтобы улучшить методы)
Аттрибут [Display(Name = "...")] описывается в C# классе и используется в @Html.LabelFor, @Html.DisplayNameFor в ASP.NET MVC
Аттрибут [Required(ErrorMessage = "Пожалуйста, введите название")] описывается для свойства в C# классе и требует чтобы свойство было заполнено, если не заполнено на экране ошибка ErrorMessage в ASP.NET MVC
Аттрибут [Remote("IsValidAuthor", "Home", ErrorMessage = "Enter correct author of book")] описывается для свойства в C# классе и проверяет это свойство на правильность на сервере через метод IsValidAuthor в conroller Home, если метод возвращает false, то на экране будет ошибка ErrorMessage в ASP.NET MVC
Аттрибут [HiddenInput(DisplayValue = false)] описывается в C# классе и используется в @Html.HiddenFor в ASP.NET MVC
Маршрутизация
Ссылки и перенаправления в представлении
@Html.ActionLink внутри View в ASP.NET MVC
@Html.RouteLink внутри View в ASP.NET MVC
@Url.Action внутри View в ASP.NET MVC
@Url.RouteUrl внутри View в ASP.NET MVC
@Url.Content внутри View в ASP.NET MVC
Bootstrap в MVC
Добавляем и подключаем Bootstrap (css, js файлы) в ASP.NET MVC проект
JQuery в МVС
Подключаем JQuery в ASP.NET MVC проект
С помощью JQuery получаем содержимое View (представления) в ASP.NET MVC. Пример: $.get("/Home/Index", function (data) {...}) ...
Класс AjaxExtensions в МVС (асинхронное получение данных)
Подключаем jQuery & AJAX в ASP.NET MVC проект
С помощью Ajax.ActionLink получаем содержимое View (представления) и вставляем в div в ASP.NET MVC
Объект Ajax (это класс AjaxExtensions) в ASP.NET МVС
База данных (Entity Framework) в ASP.NET MVC
Entity Framework в приложении ASP.NET MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Аутентификация (login/register/logout)
Что такое аутентификация (login/register/logout) в ASP.NET MVC ?
Пример: Аутентификация (login/register/logout) в ASP.NET MVC используя аутентификацию форм FormsAuthentication.SetAuthCookie(model.Name, true);
Авторизация (admin/user/...)
Что такое авторизация (admin/user/...) в ASP.NET MVC ?
Пример: Авторизация (admin/user/...) в ASP.NET MVC используя провайдер ролей RoleProvider
Пишем приложение "Планирование дел, задач" в ASP.NET MVC
Создаем пустое приложение "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Добавляем библиотеки Bootstrap & jQuery в приложение "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Создаем мастер-представление (главное меню & логин кнопки используя Bootstrap) в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Добавляем контроллер "Home" и представление "Index" (главная страница в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Добавляем библиотеку Entity Framework и создаем соединиение с Базой данных в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Аутентификация (login/register/logout) в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Добавляем класс "Task" для сохранения дел, задач в базу данных в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Добавление nUnit в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Дополнительные темы, вопросы
Чем ASP.NET MVC лучше ASP.NET Web Forms ?
Выбор между ASP.NET Core и ASP.NET ?
Как выбрать интернет браузер чтобы в нем запускался .NET проект
Как узнать локальный адрес и порт вашего ASP.NET MVC приложения ?
Scripts\index.d.ts(8,1): error TS1008: Build:Unexpected token; 'module, class, interface, enum, import or statement' expected. Scripts\index.d.ts(8,13): error TS1005: Build:';' expected. в Visual Studio 2017 в приложении ASP.NET MVC
Error "unable to connect to web server "iis express" | ASP.NET MVC | Visual Studio 2017
Error "This site can't be reached" when run ASP.NET application | Solution: Recreate the Self-Signed HTTPS Certificate for localhost in IIS Express
WWW сайты для изучения ASP.NET MVC
Cайты для изучения ASP.NET MVC

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика