1. Главная страница » Компьютеры »

Asp net entity framework

Автор: | 16.12.2019

Подключение и создание базы данных в Entity Framework Core

Entity Framework представляет прекрасное ORM-решение, которое позволяет автоматически связать обычные классы языка C# с таблицами в базе данных. Entity Framework Core нацелен в первую очередь на работу с СУБД MS SQL Server, однако поддерживает также и ряд других СУБД. В данном случае мы будем работать с базами данных в MS SQL Server.

Также стоит отметить, что здесь мы будем использовать именно Entity Framework Core 2.1 — кроссплатформенное решение на базе .NET Core, которое отличается от предыдущих версий, например, от Entity Framework 6. Более подробно с работой с Entity Framework Core можно ознакомиться в соответствуюшем руководстве.

Для работы с Entity Framework вначале создадим новый проект ASP.NET Core по шаблону Web Application (Model-View-Controller). Пусть он будет называться EFDataApp .

Asp net entity framework

По умолчанию в проекте библиотеки Entity Framework отсутствуют, и их надо добавить. Это можно сделать разными способами — через Nuget, через Package Manager Console, либо просто вписав нужную зависимость в project.json. Выберем последний способ.

Для взаимодействия с MS SQL Server через Entity Framework необходим пакет Microsoft.EntityFrameworkCore.SqlServer . Но, кроме того, перед работой с базой данных нам предварительно надо создать эту базу данных в соответствии с вышеопределенными моделями. И для этого потребуется пакет Microsoft.EntityFrameworkCore.Tools . В проекте для версии ASP.NET Core 2.0 и выше эти пакеты уже присутствуют по умолчанию.

Далее добавим в проект новую папку, которую назовем Models. И в этой папке определим новый класс Phone:

Эта модель представляет те объекты, которые будут храниться в базе данных.

Чтобы взаимодействовать с базой данных через Entity Framework нам нужен контекст данных — класс, унаследованный от класса Microsoft.EntityFrameworkCore.DbContext . Поэтому добавим в папку Models новый класс, который назовем MobileContext:

Свойство DbSet представляет собой коллекцию объектов, которая сопоставляется с определенной таблицей в базе данных. При этом по умолчанию название свойства должно соответствовать множественному числу названию модели в соответствии с правилами английского языка. То есть phone — название класса модели представляет единственное число, а phones — множественное число.

Через параметр options в конструктор контекста данных будут передаваться настройки контекста.

В конструкторе с помощью вызова Database.EnsureCreated() по определению моделей будет создаваться база данных (если она отсутствует).

Чтобы подключаться к базе данных, нам надо задать параметры подключения. Для этого изменим файл appsettings.json , добавив в него определение строки подключения:

В данном случае мы будем использовать упрощенный движок базы данных LocalDB, который представляет легковесную версию SQL Server Express, предназначенную специально для разработки приложений.

И последним шагом в настройке проекта является изменение файла Startup.cs . В нем нам надо изменить метод ConfigureServices() :

Добавление контекста данных в виде сервиса позволит затем получать его в конструкторе контроллера через механизм внедрения зависимостей.

Для разработки новых приложений мы рекомендуем ASP.NET Core Razor Pages по ASP.NET MVC контроллеры и представления. For new development, we recommend ASP.NET Core Razor Pages over ASP.NET MVC controllers and views. Для следующего вида серии руководств см. в разделе с помощью Razor Pages, руководства: Начало работы с Razor Pages в ASP.NET Core. For a tutorial series similar to this one using Razor Pages, see Tutorial: Get started with Razor Pages in ASP.NET Core. Новый учебник. The new tutorial:

  • проще для выполнения; Is easier to follow.
  • содержит больше рекомендаций по EF Core; Provides more EF Core best practices.
  • использует более эффективные запросы; Uses more efficient queries.
  • более актуально, так как используются новейшие API; Is more current with the latest API.
  • охватывает дополнительные возможности; Covers more features.
  • является предпочтительным подходом для разработки новых приложений. Is the preferred approach for new application development.

В этой серии руководств вы узнаете, как создать приложение ASP.NET MVC 5, использующий Entity Framework 6 для доступа к данным. In this series of tutorials, you learn how to build an ASP.NET MVC 5 application that uses Entity Framework 6 for data access. В этом учебнике используется Code First рабочего процесса. This tutorial uses the Code First workflow. Сведения о том, как выбрать Code First, Database First или Model First, см. в разделе создать модель. For information about how to choose between Code First, Database First, and Model First, see Create a model.

В этой серии руководств описывается построение примера приложения университета Contoso. This tutorial series explains how to build the Contoso University sample application. Пример приложения веб-сайт простой университета. The sample application is a simple university website. С ним вы можете просматривать и обновлять учащихся, курсах и сведения о преподавателе. With it, you can view and update student, course, and instructor information. Ниже приведены два созданных экранов. Here are two of the screens you create:

Asp net entity framework

Asp net entity framework

В этом учебнике рассмотрены следующие задачи. In this tutorial, you:

  • Создать веб-приложение MVC Create an MVC web app
  • Настройка стиля сайта Set up the site style
  • Установка Entity Framework 6 Install Entity Framework 6
  • Создание модели данных Create the data model
  • Создание контекста базы данных Create the database context
  • Инициализация базы данных с тестовыми данными Initialize DB with test data
  • Настройка EF 6 для использования LocalDB Set up EF 6 to use LocalDB
  • Создание контроллера и представлений Create controller and views
  • Просмотр базы данных View the database

Предварительные требования Prerequisites

Создать веб-приложение MVC Create an MVC web app

Откройте Visual Studio и создайте C# веб-проекта с помощью веб-приложение ASP.NET (.NET Framework) шаблона. Open Visual Studio and create a C# web project using the ASP.NET Web Application (.NET Framework) template. Назовите проект ContosoUniversity и выберите ОК. Name the project ContosoUniversity and select OK.

Asp net entity framework

В новый веб-приложение ASP.NET — ContosoUniversityвыберите MVC. In New ASP.NET Web Application — ContosoUniversity, select MVC.

Asp net entity framework

По умолчанию проверки подлинности параметру присваивается без проверки подлинности. By default, the Authentication option is set to No Authentication. В этом учебнике веб-приложение не требует пользователи выполняли вход. For this tutorial, the web app doesn’t require users to sign in. Кроме того он не ограничивает доступ, в зависимости от того, кто выполнил вход. Also, it doesn’t restrict access based on who’s signed in.

Нажмите кнопку ОК, чтобы создать проект. Select OK to create the project.

Настройка стиля сайта Set up the site style

Выполните незначительную настройку меню, макета и домашней страницы сайта. A few simple changes will set up the site menu, layout, and home page.

Откройте ViewsShared\_Layout.cshtmlи внесите следующие изменения: Open ViewsShared\_Layout.cshtml, and make the following changes:

  • Замените все вхождения «My ASP.NET Application» и «Имя приложения» на «Contoso University». Change each occurrence of "My ASP.NET Application" and "Application name" to "Contoso University".
  • Добавление пунктов меню для учащихся, курсов, преподавателей и отделов и удалите запись контакта. Add menu entries for Students, Courses, Instructors, and Departments, and delete the Contact entry.

Изменения выделены в следующем фрагменте кода: The changes are highlighted in the following code snippet:

В ViewsHomeIndex.cshtml, замените содержимое файла следующим кодом, который заменяет текст о ASP.NET и MVC об этом приложении: In ViewsHomeIndex.cshtml, replace the contents of the file with the following code to replace the text about ASP.NET and MVC with text about this application:

Читайте также:  2 Дтв подключение к телевизору

Нажмите клавиши Ctrl + F5 для запуска веб-сайта. Press Ctrl+F5 to run the web site. Появится домашняя страница с меню. You see the home page with the main menu.

Установка Entity Framework 6 Install Entity Framework 6

Из средства меню, выберите диспетчер пакетов NuGet, а затем выберите консоль диспетчера пакетов. From the Tools menu, choose NuGet Package Manager, and then choose Package Manager Console.

В консоль диспетчера пакетов окно, введите следующую команду: In the Package Manager Console window, enter the following command:

Этот шаг является одним из нескольких шагов с учебником можно сделать вручную, но, могло быть сделано автоматически с помощью функции формирования шаблонов ASP.NET MVC. This step is one of a few steps that this tutorial has you do manually, but that could have been done automatically by the ASP.NET MVC scaffolding feature. Вы выполняете их вручную, чтобы вы могли видеть шаги, необходимые для использования Entity Framework (EF). You’re doing them manually so that you can see the steps required to use Entity Framework (EF). Вы воспользуетесь формирования шаблонов позже для создания контроллера и представлений MVC. You’ll use scaffolding later to create the MVC controller and views. Альтернативным вариантом является для формирования шаблонов автоматически установить пакет EF NuGet создать класс контекста базы данных и создания строки подключения. An alternative is to let scaffolding automatically install the EF NuGet package, create the database context class, and create the connection string. Когда вы будете готовы сделать это таким образом, что необходимо сделать всего лишь пропустить эти шаги и сформировать шаблон контроллера MVC после создания классов сущностей. When you’re ready to do it that way, all you have to do is skip those steps and scaffold your MVC controller after you create your entity classes.

Создание модели данных Create the data model

Теперь необходимо создать классы сущностей для приложения университета Contoso. Next you’ll create entity classes for the Contoso University application. Сначала вы возьмете следующих трех сущностей: You’ll start with the following three entities:

Курс регистрации учащегося Course Enrollment Student

Сущности EntitiesRelationship Relationship
Курс для регистрации Course to Enrollmentодин ко многим One-to-many
Учащегося для регистрации Student to Enrollmentодин ко многим One-to-many

Между сущностями Student и Enrollment , а также между сущностями Course и Enrollment существует отношение "один ко многим". There’s a one-to-many relationship between Student and Enrollment entities, and there’s a one-to-many relationship between Course and Enrollment entities. Другими словами, учащийся может быть зарегистрирован в любом количестве курсов, а в отдельном курсе может быть зарегистрировано любое количество учащихся. In other words, a student can be enrolled in any number of courses, and a course can have any number of students enrolled in it.

В следующих разделах вы создадите класс для каждого из этих сущностей. In the following sections, you’ll create a class for each one of these entities.

При попытке компиляции проекта до завершения создания всех этих классов сущностей, вы получите ошибки компилятора. If you try to compile the project before you finish creating all of these entity classes, you’ll get compiler errors.

Сущность Student The Student entity

В моделей папке создайте файл класса с именем Student.cs щелкнув правой кнопкой папку, в обозревателе решений и выбрав добавить > Класс. In the Models folder, create a class file named Student.cs by right-clicking on the folder in Solution Explorer and choosing Add > Class. Замените код шаблона следующим кодом: Replace the template code with the following code:

Свойство ID будет использоваться в качестве столбца первичного ключа в таблице базы данных, соответствующей этому классу. The ID property will become the primary key column of the database table that corresponds to this class. По умолчанию Entity Framework интерпретирует свойство с именем ID или classname ID как первичный ключ. By default, Entity Framework interprets a property that’s named ID or classname ID as the primary key.

Свойство Enrollments является свойством навигации. The Enrollments property is a navigation property. Свойства навигации содержат другие сущности, связанные с этой сущностью. Navigation properties hold other entities that are related to this entity. В этом случае Enrollments свойство Student сущность будет содержать все Enrollment сущностей, которые связаны Student сущности. In this case, the Enrollments property of a Student entity will hold all of the Enrollment entities that are related to that Student entity. Другими словами если заданный Student строк в базе данных имеет два связанных Enrollment строк (значение строки, которые содержат первичный ключ этого учащегося в их StudentID внешний ключевой столбец), в котором Student сущности Enrollments свойство навигации будет содержать две этих Enrollment сущностей. In other words, if a given Student row in the database has two related Enrollment rows (rows that contain that student’s primary key value in their StudentID foreign key column), that Student entity’s Enrollments navigation property will contain those two Enrollment entities.

Свойства навигации, обычно определяются как virtual таким образом, чтобы они можно воспользоваться преимуществами определенные функциональные возможности Entity Framework, такие как отложенная загрузка. Navigation properties are typically defined as virtual so that they can take advantage of certain Entity Framework functionality such as lazy loading. (Отложенная загрузка, будет рассматриваться далее в чтение связанных данных далее в этой серии руководств.) (Lazy loading will be explained later, in the Reading Related Data tutorial later in this series.)

Если свойство навигации может содержать несколько сущностей (как в отношениях "многие ко многим" или "один ко многим"), оно должно иметь тип списка, допускающий добавление, удаление и обновление записей, такой как ICollection . If a navigation property can hold multiple entities (as in many-to-many or one-to-many relationships), its type must be a list in which entries can be added, deleted, and updated, such as ICollection .

Сущность Enrollment The Enrollment entity

В папке Models создайте файл Enrollment.cs и замените существующий код следующим кодом: In the Models folder, create Enrollment.cs and replace the existing code with the following code:

EnrollmentID Свойство будет иметь первичный ключ; эта сущность использует classname ID шаблонов вместо ID , как вы видели в Student сущности. The EnrollmentID property will be the primary key; this entity uses the classname ID pattern instead of ID by itself as you saw in the Student entity. Как правило, следует выбирать один шаблон, который будет использоваться в рамках всей модели данных. Ordinarily you would choose one pattern and use it throughout your data model. В этом случае демонстрируется возможность использования любого из шаблонов. Here, the variation illustrates that you can use either pattern. В этом руководстве, вы увидите как с помощью ID без classname позволяет упростить реализацию наследования в модели данных. In a later tutorial, you’ll see how using ID without classname makes it easier to implement inheritance in the data model.

Grade Свойство перечисления. The Grade property is an enum. Знак вопроса после Grade объявление типа указывает, что Grade свойство допускает значения NULL. The question mark after the Grade type declaration indicates that the Grade property is nullable. Корпоративного класса, который имеет значение null отличается от нулевой оценки тем — значение null означает, что это оценка не известна или еще не назначена. A grade that’s null is different from a zero grade — null means a grade isn’t known or hasn’t been assigned yet.

Свойство StudentID представляет собой внешний ключ. Ему соответствует свойство навигации Student . The StudentID property is a foreign key, and the corresponding navigation property is Student . Сущность Enrollment связана с одной сущностью Student , поэтому это свойство может содержать одну сущность Student (в отличие от представленного ранее свойства навигации Student.Enrollments , которое может содержать несколько сущностей Enrollment ). An Enrollment entity is associated with one Student entity, so the property can only hold a single Student entity (unlike the Student.Enrollments navigation property you saw earlier, which can hold multiple Enrollment entities).

Читайте также:  Ocz trion 150 240gb

Свойство CourseID представляет собой внешний ключ. Ему соответствует свойство навигации Course . The CourseID property is a foreign key, and the corresponding navigation property is Course . Сущность Enrollment связана с одной сущностью Course . An Enrollment entity is associated with one Course entity.

Платформа Entity Framework интерпретирует свойство как свойство внешнего ключа, если оно имеет имя (например, StudentID для Student свойство навигации с момента Student — первичный ключ сущности ID ). Entity Framework interprets a property as a foreign key property if it’s named

Это руководстве не было обновлено для использования с версией ASP.NET Core 3.0. This tutorial has not been updated to ASP.NET Core 3.0. Версия Razor Pages была обновлена. The Razor Pages version has been updated. См. сведения о возможном обновлении в этой проблеме GitHub. For information on when this might be updated, see this GitHub issue.

Это руководство описывает MVC-модель ASP.NET Core и Entity Framework Core с контроллерами и представлениями. This tutorial teaches ASP.NET Core MVC and Entity Framework Core with controllers and views. Razor Pages — это альтернативная модель программирования, которая появилась в ASP.NET Core 2.0. Razor Pages is an alternative programming model that was introduced in ASP.NET Core 2.0. Для новой разработки мы рекомендуем использовать Razor Pages, а не MVC с контроллерами и представлениями. For new development, we recommend Razor Pages over MVC with controllers and views. См. версию руководства по Razor Pages. There is a Razor Pages version of this tutorial. В каждом руководстве содержатся уникальные материалы: Each tutorial covers some material the other doesn’t:

В руководстве по MVC содержатся материалы, которых нет в руководстве по Razor Pages: Some things this MVC tutorial has that the Razor Pages tutorial doesn’t:

  • Реализация наследования в модели данных Implement inheritance in the data model
  • Выполнение прямых SQL-запросов Perform raw SQL queries
  • Использование динамических запросов LINQ для упрощения кода Use dynamic LINQ to simplify code

В руководстве по Razor Pages содержатся материалы, которых нет в этом руководстве: Some things the Razor Pages tutorial has that this one doesn’t:

  • Использование метода Select для загрузки связанных данных Use Select method to load related data
  • Версия, доступная для ASP.NET Core 3.0 A version available for ASP.NET Core 3.0

На примере веб-приложения Contoso University показано, как создавать веб-приложения MVC ASP.NET Core 2.2 с помощью Entity Framework (EF) Core 2.2 и Visual Studio 2017 или 2019. The Contoso University sample web application demonstrates how to create ASP.NET Core 2.2 MVC web applications using Entity Framework (EF) Core 2.2 and Visual Studio 2017 or 2019.

В этом примере приложения реализуется веб-сайт вымышленного университета Contoso. The sample application is a web site for a fictional Contoso University. На нем предусмотрены различные функции, в том числе прием учащихся, создание курсов и назначение преподавателей. It includes functionality such as student admission, course creation, and instructor assignments. Это первый учебник из серии, в котором с самого начала описывается построение примера приложения для университета Contoso. This is the first in a series of tutorials that explain how to build the Contoso University sample application from scratch.

В этом учебнике рассмотрены следующие задачи. In this tutorial, you:

  • Создание веб-приложения ASP.NET Core MVC Create an ASP.NET Core MVC web app
  • Настройка стиля сайта Set up the site style
  • Дополнительные сведения о пакетах NuGet EF Core Learn about EF Core NuGet packages
  • Создание модели данных Create the data model
  • Создание контекста базы данных Create the database context
  • Регистрация контекста для внедрения зависимостей Register the context for dependency injection
  • Инициализация базы с использованием тестовых данных Initialize the database with test data
  • Создание контроллера и представлений Create a controller and views
  • Просмотр базы данных View the database

Предварительные требования Prerequisites

  • Пакет SDK для .NET Core 2.2 .NET Core SDK 2.2
  • Visual Studio 2019 с указанными ниже рабочими нагрузками. Visual Studio 2019 with the following workloads:
  • Рабочая нагрузка ASP.NET и веб-разработкаASP.NET and web development workload
  • Рабочая нагрузка Кроссплатформенная разработка .NET Core.NET Core cross-platform development workload

Устранение неполадок Troubleshooting

Если вы столкнулись с проблемами, для их решения можно попробовать сравнить свой код с кодом готового проекта. If you run into a problem you can’t resolve, you can generally find the solution by comparing your code to the completed project. Список распространенных ошибок и способы их устранения см. в разделе "Устранение неполадок" последнего руководства серии. For a list of common errors and how to solve them, see the Troubleshooting section of the last tutorial in the series. Если вам не удалось найти нужную информацию, вы можете задать вопрос на сайте StackOverflow.com в разделах, посвященных ASP.NET Core или EF Core. If you don’t find what you need there, you can post a question to StackOverflow.com for ASP.NET Core or EF Core.

Эта серия включает в себя 10 учебников, содержание каждого из которых базируется на предыдущих учебниках. This is a series of 10 tutorials, each of which builds on what is done in earlier tutorials. После успешного завершения каждого руководства рекомендуется сохранять копию проекта. Consider saving a copy of the project after each successful tutorial completion. Таким образом, при возникновении проблем вы сможете вернуться к предыдущему учебнику, а не к началу серии. Then if you run into problems, you can start over from the previous tutorial instead of going back to the beginning of the whole series.

Веб-приложение Contoso University Contoso University web app

В рамках этих учебников вы будете создавать приложение, которое представляет собой простой веб-сайт университета. The application you’ll be building in these tutorials is a simple university web site.

Пользователи приложения могут просматривать и обновлять сведения об учащихся, курсах и преподавателях. Users can view and update student, course, and instructor information. Будет создано несколько экранов. Here are a few of the screens you’ll create.

Asp net entity framework

Asp net entity framework

Создание веб-приложения Create web app

Запустите Visual Studio. Open Visual Studio.

В меню Файл выберите пункт Создать > Проект. From the File menu, select New > Project.

В области слева выберите Установленные > Visual C# > Интернет. From the left pane, select Installed > Visual C# > Web.

Выберите шаблон проекта Веб-приложение ASP.NET Core. Select the ASP.NET Core Web Application project template.

Введите имя ContosoUniversity и нажмите кнопку ОК. Enter ContosoUniversity as the name and click OK.

Asp net entity framework

Дождитесь появления диалогового окна Создание веб-приложения ASP.NET Core. Wait for the New ASP.NET Core Web Application dialog to appear.

Выберите .NET Core, ASP.NET Core 2.2 и шаблон Веб-приложение (модель — представление — контроллер) . Select .NET Core, ASP.NET Core 2.2 and the Web Application (Model-View-Controller) template.

Убедитесь, что для параметра Проверка подлинности задано значение Без проверки подлинности. Make sure Authentication is set to No Authentication.

Нажмите кнопку ОК Select OK

Asp net entity framework

Настройка стиля сайта Set up the site style

Выполните незначительную настройку меню, макета и домашней страницы сайта. A few simple changes will set up the site menu, layout, and home page.

Откройте файл Views/Shared/_Layout.cshtml и внесите следующие изменения: Open Views/Shared/_Layout.cshtml and make the following changes:

Замените все вхождения "ContosoUniversity" на "Contoso University". Change each occurrence of "ContosoUniversity" to "Contoso University". Таких элементов будет три. There are three occurrences.

Добавьте пункты меню About (Сведения), Students (Учащиеся), Courses (Курсы), Instructors (Преподаватели) и Departments (Кафедры). Удалите пункт меню Privacy (Конфиденциальность). Add menu entries for About, Students, Courses, Instructors, and Departments, and delete the Privacy menu entry.

Читайте также:  Cisco включить web интерфейс

Изменения выделены. The changes are highlighted.

Замените содержимое файла Views/Home/Index.cshtml следующим кодом, который заменяет текст о ASP.NET и MVC описанием этого приложения: In Views/Home/Index.cshtml, replace the contents of the file with the following code to replace the text about ASP.NET and MVC with text about this application:

Нажмите клавиши CTRL+F5, чтобы запустить проект, и выберите в меню Отладка > Запуск без отладки. Press CTRL+F5 to run the project or choose Debug > Start Without Debugging from the menu. Откроется домашняя страница, на которой будут представлены созданные в рамках этих учебников вкладки. You see the home page with tabs for the pages you’ll create in these tutorials.

Asp net entity framework

Сведения о пакетах NuGet EF Core About EF Core NuGet packages

Чтобы реализовать поддержку EF Core в проекте, установите поставщик целевой базы данных. To add EF Core support to a project, install the database provider that you want to target. В этом учебнике используется SQL Server, для которого требуется пакет поставщика Microsoft.EntityFrameworkCore.SqlServer. This tutorial uses SQL Server, and the provider package is Microsoft.EntityFrameworkCore.SqlServer. Этот пакет входит в метапакет Microsoft.AspNetCore.App, поэтому ссылаться на него не нужно. This package is included in the Microsoft.AspNetCore.App metapackage, so you don’t need to reference the package.

Этот пакет EF SQL Server и его зависимости ( Microsoft.EntityFrameworkCore и Microsoft.EntityFrameworkCore.Relational ) обеспечивают поддержку среды выполнения для платформы EF. The EF SQL Server package and its dependencies ( Microsoft.EntityFrameworkCore and Microsoft.EntityFrameworkCore.Relational ) provide runtime support for EF. Пакет средств будет добавлен позднее в рамках учебника Миграции. You’ll add a tooling package later, in the Migrations tutorial.

Дополнительные сведения о других поставщиках баз данных, которые доступны для платформы Entity Framework Core, см. в разделе Поставщики баз данных. For information about other database providers that are available for Entity Framework Core, see Database providers.

Создание модели данных Create the data model

Теперь необходимо создать классы сущностей для приложения университета Contoso. Next you’ll create entity classes for the Contoso University application. Для начала создаются следующие три сущности. You’ll start with the following three entities.

Asp net entity framework

Между сущностями Student и Enrollment , а также между сущностями Course и Enrollment существует отношение "один ко многим". There’s a one-to-many relationship between Student and Enrollment entities, and there’s a one-to-many relationship between Course and Enrollment entities. Другими словами, учащийся может быть зарегистрирован в любом количестве курсов, а в отдельном курсе может быть зарегистрировано любое количество учащихся. In other words, a student can be enrolled in any number of courses, and a course can have any number of students enrolled in it.

В следующих разделах создаются классы для каждой из этих сущностей. In the following sections you’ll create a class for each one of these entities.

Сущность Student The Student entity

Asp net entity framework

В папке Models создайте файл класса с именем Student.cs и замените код шаблона следующим кодом. In the Models folder, create a class file named Student.cs and replace the template code with the following code.

Свойство ID будет использоваться в качестве столбца первичного ключа в таблице базы данных, соответствующей этому классу. The ID property will become the primary key column of the database table that corresponds to this class. По умолчанию платформа Entity Framework интерпретирует в качестве первичного ключа свойство ID или classnameID . By default, the Entity Framework interprets a property that’s named ID or classnameID as the primary key.

Свойство Enrollments является свойством навигации. The Enrollments property is a navigation property. Свойства навигации содержат другие сущности, связанные с этой сущностью. Navigation properties hold other entities that are related to this entity. В этом случае свойство Enrollments сущности Student entity содержит все сущности Enrollment , которые связаны с этой сущностью Student . In this case, the Enrollments property of a Student entity will hold all of the Enrollment entities that are related to that Student entity. Другими словами, если с указанной строкой Student в базе данных связаны две строки Enrollment (строки, в столбце внешнего ключа StudentID которых содержится первичный ключ этого учащегося), в этой сущности Student свойство навигации Enrollments будет содержать две этих сущности Enrollment . In other words, if a given Student row in the database has two related Enrollment rows (rows that contain that student’s primary key value in their StudentID foreign key column), that Student entity’s Enrollments navigation property will contain those two Enrollment entities.

Если свойство навигации может содержать несколько сущностей (как в отношениях "многие ко многим" или "один ко многим"), оно должно иметь тип списка, допускающий добавление, удаление и обновление записей, такой как ICollection . If a navigation property can hold multiple entities (as in many-to-many or one-to-many relationships), its type must be a list in which entries can be added, deleted, and updated, such as ICollection . Вы можете указать тип ICollection либо, например, тип List или HashSet . You can specify ICollection or a type such as List or HashSet . Если указан тип ICollection , платформа EF по умолчанию создает коллекцию HashSet . If you specify ICollection , EF creates a HashSet collection by default.

Сущность Enrollment The Enrollment entity

Asp net entity framework

В папке Models создайте файл Enrollment.cs и замените существующий код следующим кодом: In the Models folder, create Enrollment.cs and replace the existing code with the following code:

Свойство EnrollmentID будет использоваться в качестве первичного ключа. В этой сущности используется шаблон classnameID вместо ID , как в сущности Student . The EnrollmentID property will be the primary key; this entity uses the classnameID pattern instead of ID by itself as you saw in the Student entity. Как правило, следует выбирать один шаблон, который будет использоваться в рамках всей модели данных. Ordinarily you would choose one pattern and use it throughout your data model. В этом случае демонстрируется возможность использования любого из шаблонов. Here, the variation illustrates that you can use either pattern. В одном из следующих учебников вы узнаете, за счет чего использование идентификатора без имени класса позволяет упростить реализацию наследования в модели данных. In a later tutorial, you’ll see how using ID without classname makes it easier to implement inheritance in the data model.

Свойство Grade имеет тип enum . The Grade property is an enum . Знак вопроса после объявления типа Grade указывает, что свойство Grade допускает значение null. The question mark after the Grade type declaration indicates that the Grade property is nullable. Оценка со значением null отличается от нулевой оценки тем, что при таком значении оценка еще не известна или не назначена. A grade that’s null is different from a zero grade — null means a grade isn’t known or hasn’t been assigned yet.

Свойство StudentID представляет собой внешний ключ. Ему соответствует свойство навигации Student . The StudentID property is a foreign key, and the corresponding navigation property is Student . Сущность Enrollment связана с одной сущностью Student , поэтому это свойство может содержать одну сущность Student (в отличие от представленного ранее свойства навигации Student.Enrollments , которое может содержать несколько сущностей Enrollment ). An Enrollment entity is associated with one Student entity, so the property can only hold a single Student entity (unlike the Student.Enrollments navigation property you saw earlier, which can hold multiple Enrollment entities).

Свойство CourseID представляет собой внешний ключ. Ему соответствует свойство навигации Course . The CourseID property is a foreign key, and the corresponding navigation property is Course . Сущность Enrollment связана с одной сущностью Course . An Enrollment entity is associated with one Course entity.

Платформа Entity Framework интерпретирует свойство как свойство внешнего ключа, если оно имеет имя

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *