• Главная
  • Карта сайта
Не найдено

Ваше перше ASP.NET 5 веб додаток, створене за допомогою Visual Studio - Документація ASP.NET 5 vNext

  1. Запуск програми за замовчуванням
  2. Перегляд проекту
  3. розуміння MVC
  4. Розуміння .NET Core
  5. Створення entity-класів
  6. скаффолдинг
  7. Налаштування програми перед додаванням даних
  8. Додавання даних
  9. Створення веб додатки

У цьому керівництві ви побачите, як створити просте веб додаток за допомогою ASP.NET 5. У цьому додатку дані будуть пов'язані з базою даних SQL за допомогою Entity Framework (EF), а ASP.NET MVC буде підтримувати операції CRUD.

Перш ніж почати, переконайтеся, що ви зробили ось це: Установка ASP.NET 5 для Windows . Ми припускаємо, що у вас встановлена Visual Studio 2015 і остання версія середовища та інструментарію ASP.NET 5 .

Примітка

Додаткову інформацію по установці ASP.NET 5 на інших платформах ви можете отримати тут: починаємо .

Запустіть Visual Studio 2015. З меню File виберіть New> Project.

Виберіть шаблон ASP.NET Web Application. Він знаходиться в Installed> Templates> Visual C #> Web. Назвіть проект ContosoBooks і натисніть OK.

Назвіть проект ContosoBooks і натисніть OK

У діалоговому вікні New ASP.NET Project виберіть Web Application під ASP.NET 5 Preview Templates. Крім того, переконайтеся, що галочка не стоїть на Host in the cloud, і натисніть OK.

Крім того, переконайтеся, що галочка не стоїть на Host in the cloud, і натисніть OK

Примітка

Не міняйте метод аутентифікації. Залиште за умовчанням Individual User Accounts.

Запуск програми за замовчуванням

Після того як Visual Studio закінчить створення додатка, запустіть його, натиснувши Debug -> Start Debugging. Як варіант, ви можете натиснути F5.

Для ініціалізації Visual Studio і нової програми може знадобитися час. Після завершення браузер покаже запущене застосування.

Після запуску програми закрийте браузер і натисніть на іконку "Stop Debugging" в Visual Studio, щоб зупинити додаток.

Перегляд проекту

У Visual Studio вікно Solution Explorer дозволяє вам керувати файлами проекту. Шаблон веб додатки, який ви використовували для створення цього додатка, додає наступну базову структуру папок:

Шаблон веб додатки, який ви використовували для створення цього додатка, додає наступну базову структуру папок:

Visual Studio створює деякі початкові файли і папки для проекту. Ось первинні файли, з якими вам варто ознайомитися:

Файл Мета project.json Присутність файлу project.json визначає проект .NET Execution Environment (DNX). У файлі project.json міститься вся інформація, яка потрібна DNX, щоб запустити і упакувати ваш проект. Додаткову інформацію, включаючи файлову схему project.json, ви можете знайти тут: see Робота з DNX проектами . global.json Visual Studio використовує цей файл для конфігурації проекту. appsettings.json Цей файл дозволяє вам включати додаткову інформацію про проект. Додаткову інформацію ви можете отримати тут: конфігурація . Startup.cs Клас Startup є початковою точкою докладання. У класі Startup повинен бути визначений метод Configure, крім того, тут може бути визначений метод ConfigureServices, і він може бути викликаний при запуску програми. Додаткову інформацію ви можете отримати тут: запуск програми . Index.cshtml Тут view містить HTML для головної сторінки. _Layout.cshtml Тут view містить загальний HTML для різних сторінок веб додатки. HomeController.cs Цей controller містить класи, які обробляють вхідні запити браузера, отримують модельні дані, а потім визначають шаблони уявлень, які повертають відповідь браузеру.

розуміння MVC

У цьому проекті використовується MVC . MVC позначає Model-View-Controller (модель-уявлення-контролер). MVC - це патерн для розробки додатків, і ці додатки добре структуровані, їх можна протестувати і легко підтримувати. MVC додатки містять:

  • Models: Класи, які представляють дані цього додатка, а потім використовують логіку валідації для зв'язування бізнес-правил і даних.
  • Views: Шаблонові файли, які використовує додаток для динамічних HTML відповідей.
  • Controllers: Класи, які обробляють входять браузерні запити, отримують модельні дані, а потім визначають уявлення, які повертають відповідь браузеру.

Розуміння .NET Core

.NET Core 5 - це модальна реалізація середовища розробки та бібліотек, яка включає в себе деякі аспекти .NET Framework. .NET Core 5 розробляється для Windows, Linux і OS X. .NET Core 5 складається з набору бібліотек "CoreFX" і маленькою середовища розробки "CoreCLR". .NET Core має відкритий вихідний код, так що ви можете відслідковувати розвиток проекту на GitHub. Більше інформації ви можете отримати тут: Вибір правильного .NET сервера .

Entity Framework (EF) - це ORM (object-relational mapping) фреймворк. Він дозволяє працювати з реляційними даними як з об'єктами, і при цьому вам потрібно писати набагато менше коду для доступу до даних, ніж зазвичай. Використовуючи EF, ви можете працювати з запитами за допомогою LINQ, потім отримувати і обробляти дані як строго типізовані об'єкти. LINQ пропонує патерни для запиту і поновлення даних. Використання EF дозволяє сфокусуватися на решті частини проекту, а не на засадах доступу до даних.

Відкрийте файл project.json. У розділі dependencies ви побачите наступні рядки, пов'язані з EF:

"Dependencies": { "EntityFramework.Commands": "7.0.0-rc1-final", "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",

Тут показано, що ви можете використовувати команди EF з командного вікна, а також що пакет EF NuGet включений в ваш проект.

Entity Framework підтримує парадигму розробки Code First. Code First дозволяє визначати моделі даних за допомогою класів. Клас - це конструкція, яка дозволяє створювати власні призначені для користувача типи, групуючи змінні різних типів, методи і події. Класи можуть працювати з існуючою базою даних або генерують базу даних. У цьому посібнику ви почнете з створення entity-класів, які визначають моделі даних для веб додатки. Потім ви створите контекстні класи, які керують entity-класами і дають даними доступ до бази даних. Далі ви налаштуєте EF і заповніть базу даних.

Створення entity-класів

Класи, які ви створюєте для визначення схеми даних, називаються entity-класами. Якщо ви новачок в роботі з базами даних, подумайте про entity-класах як про табличній структурі бази даних. Кожна властивість класу визначає колонку таблиці бази даних. Ці класи пропонують легкий, об'єктно-реляційний інтерфейс, який поєднує об'єктно-орієнтована код і реляционную табличну структуру бази даних.

У веб додатку буде дві сутності:

Ви визначите клас для кожної з них в папці Models в Solution Explorer.

Примітка

Модельний клас ви можете помістити в будь-яке місце вашого проекту. Папка Models - це просто угода.

Клацніть правою кнопкою мишки по папці Models і виберіть Add> New Item. У діалоговому вікні Add New Item виберіть шаблон Class. В поле Name напишіть "Author.cs" і натисніть OK.

Замініть код за замовчуванням наступним кодом:

using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace ContosoBooks.Models {public class Author {[ScaffoldColumn (false)] public int AuthorID {get; set; } [Required] [Display (Name = "Last Name")] public string LastName {get; set; } [Display (Name = "First Name")] public string FirstMidName {get; set; } Public virtual ICollection <Book> Books {get; set; }}}

Повторіть ці кроки для створення іншого класу Book з наступним кодом:

using System.ComponentModel.DataAnnotations; namespace ContosoBooks.Models {public class Book {[ScaffoldColumn (false)] public int BookID {get; set; } [Required] public string Title {get; set; } Public int Year {get; set; } [Range (1, 500)] public decimal Price {get; set; } Public string Genre {get; set; } [ScaffoldColumn (false)] public int AuthorID {get; set; } // Navigation property public virtual Author Author {get; set; }}}

Щоб не уложнять додаток, нехай у кожній книги буде один автор. Властивість Author визначає спосіб управління відносинами між автором і книгою. У EF цей тип властивості називається navigation property. Коли EF створює схему бази даних, EF автоматично вставляє AuthorID, і це буде вторинним ключем для таблиці Authors.

скаффолдинг

Скаффолдинг зберігає ваш час і зусилля, автоматично генеруючи початкову точку для операцій CRUD вашого застосування. Почавши з простого модельного класу і не написавши жодного рядка коду, ви створюєте два контролера, які містять CRUD-операції, пов'язані з авторами і книгами, а також необхідні подання.

Щоб додати скаффолдинг клікніть правою клавішею мишки по папці Controllers в Solution Explorer. Виберіть Add -> New Scaffolded Item.

Примітка

Якщо ви не бачите опцію New Scaffolded Item, переконайтеся, що при створенні проекту ви використовували Individual User Accounts.

З діалогового вікна Add Scaffold виберіть MVC 6 Controller with views, using Entity Framework, а потім натисніть на кнопку Add.

З діалогового вікна Add Scaffold виберіть MVC 6 Controller with views, using Entity Framework, а потім натисніть на кнопку Add

Далі, в діалоговому вікні Add Controller в списку з модельними класами виберіть Book (ContosoBooks.Models). Також встановіть контекстний клас на ApplicationDbContext (ContosoBooks.Models). Прапорець на Generate views повинен бути встановлений. Натисніть на кнопку Add.

Натисніть на кнопку Add

Як ви бачите, діалогове вікно Add Controller дає вам можливість вибирати опції для створення контролерів і уявлень.

Цей скаффолд створює код, який надає контролер і набір уявлень. В уявленнях є UI і код для створення, читання, оновлення, видалення та перерахування даних з бази даних.

Повторіть перераховані вище кроки по скаффолдинг, щоб створити контролер Author і пов'язані з ним уявлення. Використовуйте модельний клас Author (ContosoBooks.Models) і контекстний клас ApplicationDbContext (ContosoBooks.Models), як показано на наступному малюнку.

Models), як показано на наступному малюнку

У Solution Explorer ви побачите, що нові контролери додані в папку Controller, а нові уявлення в папку Views.

У Solution Explorer ви побачите, що нові контролери додані в папку Controller, а нові уявлення в папку Views

Налаштування програми перед додаванням даних

Далі, до додатка потрібно додати пакет Microsoft.Extensions.DependencyInjection. У Solution Explorer знайдіть і відкрийте project.json. У розділі dependencies в кінці розділу пропишіть цей рядок.

У розділі dependencies в кінці розділу пропишіть цей рядок

IntelliSense допомагає вам, коли ви набираєте. Коли ви збережете project.json, Visual Studio автоматично дасть посилання на новий пакет.

json, Visual Studio автоматично дасть посилання на новий пакет

Після додавання цього рядка розділ dependencies в файлі project.json буде виглядати ось так:

"Dependencies": { "EntityFramework.Commands": "7.0.0-rc1-final", "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", "Microsoft.AspNet.Authentication.Cookies": "1.0. 0-rc1-final "," Microsoft.AspNet.Diagnostics.Entity ":" 7.0.0-rc1-final "," Microsoft.AspNet.Identity.EntityFramework ":" 3.0.0-rc1-final "," Microsoft. AspNet.IISPlatformHandler ":" 1.0.0-rc1-final "," Microsoft.AspNet.Mvc ":" 6.0.0-rc1-final "," Microsoft.AspNet.Mvc.TagHelpers ":" 6.0.0-rc1- final "," Microsoft.AspNet.Server.Kestrel ":" 1.0.0-rc1-final "," Microsoft.AspNet.StaticFiles ":" 1.0.0-rc1-final "," Microsoft.AspNet.Tooling.Razor " : "1.0.0-rc1-final", "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final" , "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final", "Microsoft.Extensions.Logging": " 1.0.0-rc1-final "," Microsoft.Extensions.Logging.Console ":" 1.0.0-rc1-final "," Microsoft.Extensions.Logging.Debug ":" 1.0.0-rc1-final "," Microsoft.VisualStudio.Web.BrowserLink.Loader ":" 14.0.0-rc1-final "," Microsoft.Extensions.DependencyInjection ":" 1.0.0-rc1-final "},

Додавання даних

Ми не будемо вручну набирати дані - ми використовуємо код, який заповнить базу даних. Додайте клас SampleData в папці Models з наступним кодом:

using Microsoft.Data.Entity; using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; namespace ContosoBooks.Models {public static class SampleData {public static void Initialize (IServiceProvider serviceProvider) {var context = serviceProvider. GetService <ApplicationDbContext> (); context. Database. Migrate (); if (! context. Book. Any ()) {var austen = context. Author. Add (new Author {LastName = "Austen", FirstMidName = "Jane"}). Entity; var dickens = context. Author. Add (new Author {LastName = "Dickens", FirstMidName = "Charles"}). Entity; var cervantes = context. Author. Add (new Author {LastName = "Cervantes", FirstMidName = "Miguel"}). Entity; context. Book. AddRange (new Book () {Title = "Pride and Prejudice", Year = 1813, Author = austen, Price = 9.99 M, Genre = "Comedy of manners"}, new Book () {Title = "Northanger Abbey", Year = 1817 Author = austen, Price = 12.95 M, Genre = "Gothic parody"}, new Book () {Title = "David Copperfield", Year = 1850 Author = dickens, Price = 15, Genre = "Bildungsroman"} , new Book () {Title = "Don Quixote", Year = 1617, Author = cervantes, Price = 8.95 M, Genre = "Picaresque"}); context. SaveChanges (); }}}}

Ви не будете вставляти цей клас даних в виробничий код, але для нашого сценарію він годиться.

Далі, в Solution Explorer, відкрийте файл Startup.cs. Додайте наступний рядок коду в методі Configure:

SampleData. Initialize (app. ApplicationServices);

Після цього повний файл Startup.cs буде виглядати ось так:

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using ContosoBooks.Models; using ContosoBooks.Services; namespace ContosoBooks {public class Startup {public Startup (IHostingEnvironment env) {// Set up configuration sources. var builder = new ConfigurationBuilder () .AddJsonFile ( "appsettings.json") .AddJsonFile ($ "appsettings. {env.EnvironmentName} .json", optional: true); if (env.IsDevelopment ()) {// For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709 builder.AddUserSecrets (); } Builder.AddEnvironmentVariables (); Configuration = builder.Build (); } Public IConfigurationRoot Configuration {get; set; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices (IServiceCollection services) {// Add framework services. services.AddEntityFramework () .AddSqlServer () .AddDbContext <ApplicationDbContext> (options => options.UseSqlServer (Configuration [ "Data: DefaultConnection: ConnectionString"])); services.AddIdentity <ApplicationUser, IdentityRole> () .AddEntityFrameworkStores <ApplicationDbContext> () .AddDefaultTokenProviders (); services.AddMvc (); // Add application services. services.AddTransient <IEmailSender, AuthMessageSender> (); services.AddTransient <ISmsSender, AuthMessageSender> (); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure (IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {loggerFactory.AddConsole (Configuration.GetSection ( "Logging")); loggerFactory.AddDebug (); if (env.IsDevelopment ()) {app.UseBrowserLink (); app.UseDeveloperExceptionPage (); app.UseDatabaseErrorPage (); } Else {app.UseExceptionHandler ( "/ Home / Error"); // For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859 try {using (var serviceScope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory> () .CreateScope ()) { serviceScope.ServiceProvider.GetService <ApplicationDbContext> () .Database.Migrate (); }} Catch {}} app.UseIISPlatformHandler (options => options.AuthenticationDescriptions.Clear ()); app.UseStaticFiles (); app.UseIdentity (); // To configure external authentication please see http://go.microsoft.com/fwlink/?LinkID=532715 app.UseMvc (routes => {routes.MapRoute (name: "default", template: "{controller = Home} / {action = Index} / {id?} ");}); SampleData.Initialize (app.ApplicationServices); } // Entry point for the application. public static void Main (string [] args) => WebApplication.Run <Startup> (args); }}

Зверніть увагу, що в ConfigureServices додаток викликає Configuration [ "Data: DefaultConnection: ConnectionString"], щоб отримати рядок з'єднання з базою даних. Під час розробки ця настройка йде з файлу appsettings.json. Коли ви розвертаєте додаток у виробничому середовищі, ви встановлюєте рядок з'єднання в змінну середовища на хості. Якщо Configuration API знаходить змінну середовища з тим же ключем, то повертає змінну середовища, замість того значення, що знаходиться в appsettings.json.

Створення веб додатки

Щоб переконатися, що всі класи і зміни працюють, ви повинні створити додаток.

З меню Build виберіть Build Solution.

Відображається вікно Output, і якщо все пройшло успішно, ви побачите відповідне повідомлення.

Відображається вікно Output, і якщо все пройшло успішно, ви побачите відповідне повідомлення

Якщо ж сталася помилка, то перегляньте попередні кроки. Інформація у вікні Output покаже, в якому файлі виникла проблема і де потрібна зміна. Ця інформація допоможе вам визначити, які попередні кроки вам варто повторити, щоб усунути проблему.

Примітка

Перш ніж запустити додаток, ви повинні створити БД, використовуючи міграцію даних.

Міграція даних в EF використовується для поновлення моделей у всьому додатку. Спочатку використовуючи міграцію даних для створення бази даних, ви можете легко змінити базу, після того як була змінена модель. Це дозволить вам більш ефективно створювати і підтримувати додаток. Альтернативою міграції даних, коли потрібні зміни в моделі або схеми після зміни бази даних, є пересозданіе всієї бази даних.

Відкрийте Command Prompt в директорії проекту (ContosoBooks / src / ContosoBooks).

Примітка

Щоб відкрити Command Prompt, клікніть правою кнопкою мишки по кнопці start в Windows і виберіть з меню Command Prompt.

Щоб знайти директорію проекту, клікніть правою кнопкою мишки в Visual Studio на ім'я проекту (ContosoBooks) в Solution Explorer і виберіть Open Folder in File Explorer. Скопіюйте шлях до проекту з File Explorer в Command Prompt. Наприклад, введіть наступне з Command Prompt, щоб змінити директорію:

cd C: \ Projects \ ContosoBooks \ src \ ContosoBooks

Примітка

Переконайтеся, що ви перейшли до папки ContosoBooks, що в папці src.

З Command Prompt запустіть наступні команди:

dnu restore dnx ef migrations add Initial dnx ef database update

Примітка

Якщо dnu restore не розпізнає, вам потрібно повністю повторити крок з початковими реквізитами (або частково). Але спершу вам треба перевірити Active версію .NET Version Manager (dnvm). Щоб зробити це, введіть dnvm list в командному рядку. Якщо поруч з будь-якої версією ні *, встановіть активну версію, тобто, введіть dnvm use 1.0.0-rc1-update1 -p, так що потрібна версія буде обрана.

.NET Version Manager (dnvm) - це набір утиліт командного рядка, які використовуються для оновлення та конфігурації .NET Runtime.

DNX позначає .NET Execution Environment. Команда ef вказана в файлі project.json проекту. Більше інформації по dnvm, dnu, and dnx, ви можете отримати тут: DNX Overview .

Команда "add Initial" створює міграцію "Initial", яка додає в проект код, дозволяючи EF оновлювати схему бази даних. Команда update створює актуальну базу даних. Після запуску цієї команди папка Migrations буде оновлена:

Примітка

Якщо ви хочете отримати допомогу по EF командам, введіть наступне в командному рядку: dnx ef -? . Для допомоги з командою add введіть наступне: dnx ef migrations add -? . А для допомоги з командою update - наступне: dnx ef database update -? .

Крім того, ви зможете побачити нову базу даних в SQL Server Object Explorer.

Крім того, ви зможете побачити нову базу даних в SQL Server Object Explorer

Відкрийте програму, щоб побачити, як виглядає вся продукція або категорія продуктів.

У Solution Explorer клацніть правою клавішею мишки по назві проекту і виберіть View -> View in Browser. Або ж просто натисніть F5.

Відкриється браузер і покаже додаток. Натисніть на посилання Books вгорі сторінки.

Натисніть на посилання Books вгорі сторінки

Закрийте браузер і натисніть на іконку "Stop Debugging" в Visual Studio.

У Solution Explorer в Visual Studio клікніть правою кнопкою мишки по проекту і виберіть Publish.

У вікні Publish Web натисніть на Microsoft Azure Web Apps і залогініться на Azure.

Після цього натисніть New, щоб створити на Azure новий додаток.

Назвіть сайт, виберіть сервісний план, ресурсну групу і регіон. Також виберіть сервер бази даних, а також ім'я користувача та пароль до нього. Якщо ви вже створювали сервер бази даних, використовуйте його. Після цього натисніть Create.

В Connection у вікні Publish Web натисніть Publish.

Прогрес публікації ви можете переглянути у вікні Output або у вікні Azure App Service Activity в Visual Studio.

Після публікації на Azure ваше додаток, запущене на Azure, буде відображено в браузері.

Додаткова інформація доступна ось тут: Publishing and Deployment .

Com/fwlink/?
Com/fwlink/?
Com/fwlink/?
Name: "default", template: "{controller = Home} / {action = Index} / {id?
Для допомоги з командою add введіть наступне: dnx ef migrations add -?
А для допомоги з командою update - наступне: dnx ef database update -?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью