- Начало работы с Entity Framework 4,0 Database First и веб-формами ASP.NET 4 Getting Started with Entity Framework 4.0 Database First and ASP.NET 4 Web Forms
- База данных как основа Database First
- Веб-формы Web Forms
- Версии программного обеспечения Software versions
- Вопросы Questions
- Обзор Overview
- Создание веб-приложения Creating the Web Application
- Создание базы данных Creating the Database
- Создание модели данных Entity Framework Creating the Entity Framework Data Model
- Изучение модели данных Entity Framework Exploring the Entity Framework Data Model
Начало работы с Entity Framework 4,0 Database First и веб-формами ASP.NET 4 Getting Started with Entity Framework 4.0 Database First and ASP.NET 4 Web Forms
Пример веб-приложения университета Contoso демонстрирует создание приложений ASP.NET Web Forms с помощью Entity Framework 4,0 и Visual Studio 2010. The Contoso University sample web application demonstrates how to create ASP.NET Web Forms applications using the Entity Framework 4.0 and Visual Studio 2010. Пример приложения — это веб-сайт для вымышленного университета Contoso. The sample application is a website for a fictional Contoso University. На нем предусмотрены различные функции, в том числе прием учащихся, создание курсов и назначение преподавателей. It includes functionality such as student admission, course creation, and instructor assignments.
В учебнике показаны примеры C#в. The tutorial shows examples in C#. Загружаемый образец содержит код как в, C# так и в Visual Basic. The downloadable sample contains code in both C# and Visual Basic.
База данных как основа Database First
Существует три способа работы с данными в Entity Framework: Database First, Model Firstи Code First. There are three ways you can work with data in the Entity Framework: Database First, Model First, and Code First. Это руководство предназначено для Database First. This tutorial is for Database First. Сведения о различиях между этими рабочими процессами и рекомендации по выбору наиболее подходящего сценария см. в разделе рабочие процессы разработки Entity Framework. For information about the differences between these workflows and guidance on how to choose the best one for your scenario, see Entity Framework Development Workflows.
Веб-формы Web Forms
В этой серии руководств используется модель веб-форм ASP.NET и предполагается, что вы умеете работать с веб-формами ASP.NET в Visual Studio. This tutorial series uses the ASP.NET Web Forms model and assumes you know how to work with ASP.NET Web Forms in Visual Studio. Если это не так, см. статью Начало работы с веб-формами ASP.NET 4,5. If you don’t, see Getting Started with ASP.NET 4.5 Web Forms. Если вы предпочитаете работать с платформой MVC ASP.NET, см. статью Начало работы с Entity Framework с помощью ASP.NET MVC. If you prefer to work with the ASP.NET MVC framework, see Getting Started with the Entity Framework using ASP.NET MVC.
Версии программного обеспечения Software versions
Показано в руководстве Shown in the tutorial | Также работает с Also works with |
---|---|
Windows 7 Windows 7 | Windows 8 Windows 8 |
Visual Studio 2010 Visual Studio 2010 | Visual Studio 2010 Express для Web. Visual Studio 2010 Express for Web. Руководство не было протестировано в более поздних версиях Visual Studio. The tutorial has not been tested with later versions of Visual Studio. В выборе меню, диалоговых окнах и шаблонах существует много различий. There are many differences in menu selections, dialog boxes, and templates. |
.NET 4 .NET 4 | .NET 4,5 обратно совместима с .NET 4, но руководство не было протестировано с .NET 4,5. .NET 4.5 is backward compatible with .NET 4, but the tutorial has not been tested with .NET 4.5. |
Entity Framework 4 Entity Framework 4 | Руководство не было протестировано в более поздних версиях Entity Framework. The tutorial has not been tested with later versions of Entity Framework. Начиная с Entity Framework 5, EF использует по умолчанию DbContext API , который был представлен в EF 4,1. Starting with Entity Framework 5, EF uses by default the DbContext API that was introduced with EF 4.1. Элемент управления EntityDataSource предназначен для использования API ObjectContext . The EntityDataSource control was designed to use the ObjectContext API. Сведения об использовании элемента управления EntityDataSource с API DbContext см. в этой записи блога. For information about how to use the EntityDataSource control with the DbContext API, see this blog post. |
Вопросы Questions
Если у вас есть вопросы, которые не связаны непосредственно с этим руководством, вы можете опубликовать их на форуме по ASP.NET Entity Framework, на форуме Entity Framework и LINQ to Entitiesили StackOverflow.com. If you have questions that are not directly related to the tutorial, you can post them to the ASP.NET Entity Framework forum, the Entity Framework and LINQ to Entities forum, or StackOverflow.com.
Обзор Overview
Приложение, которое вы будете создавать в этих учебниках, — это простой веб-сайт университета. The application you’ll be building in these tutorials is a simple university website.
Пользователи приложения могут просматривать и обновлять сведения об учащихся, курсах и преподавателях. Users can view and update student, course, and instructor information. Ниже показаны несколько экранов, которые вы создадите. A few of the screens you’ll create are shown below.
Создание веб-приложения Creating the Web Application
Чтобы начать работу с руководством, откройте Visual Studio и создайте новый проект веб-приложения ASP.NET с помощью шаблона веб-приложения ASP.NET . To start the tutorial, open Visual Studio and then create a new ASP.NET Web Application Project using the ASP.NET Web Application template:
Этот шаблон создает проект веб-приложения, который уже содержит таблицу стилей и главные страницы: This template creates a web application project that already includes a style sheet and master pages:
Откройте файл site. master и измените «мое приложение ASP.NET» на «Contoso университет». Open the Site.Master file and change «My ASP.NET Application» to «Contoso University».
Найдите элемент управления Menu с именем NavigationMenu и замените его следующей разметкой, которая добавляет пункты меню для создаваемых страниц. Find the Menu control named NavigationMenu and replace it with the following markup, which adds menu items for the pages you’ll be creating.
Откройте страницу Default. aspx и измените элемент управления Content с именем BodyContent на следующий: Open the Default.aspx page and change the Content control named BodyContent to this:
Теперь у вас есть простая домашняя страница со ссылками на различные страницы, которые будут создаваться: You now have a simple home page with links to the various pages that you’ll be creating:
Создание базы данных Creating the Database
В этих учебниках используется конструктор моделей данных Entity Framework для автоматического создания модели данных на основе существующей базы данных (часто называется подходом « база данных-первый »). For these tutorials, you’ll use the Entity Framework data model designer to automatically create the data model based on an existing database (often called the database-first approach). Альтернативой, которая не рассматривается в этой серии руководств, является создание модели данных вручную, а затем создание конструктором скриптов, создающих базу данных (подход модели-First ). An alternative that’s not covered in this tutorial series is to create the data model manually and then have the designer generate scripts that create the database (the model-first approach).
Для метода First базы данных, используемого в этом руководстве, необходимо добавить базу данных на сайт. For the database-first method used in this tutorial, the next step is to add a database to the site. Самый простой способ — сначала загрузить проект с этим руководством. The easiest way is to first download the project that goes with this tutorial. Затем щелкните правой кнопкой мыши папку Данные приложения_ , выберите команду Добавить существующий элементи выберите файл базы данных School. mdf из скачанного проекта. Then right-click the App_Data folder, select Add Existing Item, and select the School.mdf database file from the downloaded project.
Альтернативой является соблюдение инструкций по созданию образца базы данных School. An alternative is to follow the instructions at Creating the School Sample Database. Независимо от того, скачивается база данных или создается, скопируйте файл School. mdf из следующей папки в приложение приложения_данные : Whether you download the database or create it, copy the School.mdf file from the following folder to your application’s App_Data folder:
%PROGRAMFILES%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
(В этом расположении MDF -файла предполагается, что вы используете SQL Server 2008 Express.) (This location of the .mdf file assumes you’re using SQL Server 2008 Express.)
При создании базы данных из скрипта выполните следующие действия, чтобы создать диаграмму базы данных. If you create the database from a script, perform the following steps to create a database diagram:
В Обозреватель серверараскройте узлы подключения к данным, School. mdf, щелкните правой кнопкой мыши диаграммы баз данныхи выберите команду Добавить новую диаграмму. In Server Explorer, expand Data Connections, expand School.mdf, right-click Database Diagrams, and select Add New Diagram.
Выберите все таблицы и нажмите кнопку Добавить. Select all of the tables and then click Add.
SQL Server создает диаграмму базы данных, которая показывает таблицы, столбцы в таблицах и связи между таблицами. SQL Server creates a database diagram that shows tables, columns in the tables, and relationships between the tables. Можно переместить таблицы, чтобы упорядочить их, но вам нравится. You can move the tables around to organize them however you like.
Сохраните диаграмму как «Счулдиаграм» и закройте ее. Save the diagram as «SchoolDiagram» and close it.
Если вы скачиваете файл School. mdf , который сопровождается этим руководством, можно просмотреть диаграмму базы данных, дважды щелкнув Счулдиаграм в разделе схемы базы данных в Обозреватель сервера. If you download the School.mdf file that goes with this tutorial, you can view the database diagram by double-clicking SchoolDiagram under Database Diagrams in Server Explorer.
Схема выглядит примерно так (таблицы могут находиться в разных расположениях от показанных здесь): The diagram looks something like this (the tables might be in different locations from what’s shown here):
Создание модели данных Entity Framework Creating the Entity Framework Data Model
Теперь можно создать Entity Frameworkную модель данных из этой базы данных. Now you can create an Entity Framework data model from this database. Модель данных можно создать в корневой папке приложения, но в этом учебнике вы поместите его в папку с именем DAL (для уровня доступа к данным). You could create the data model in the root folder of the application, but for this tutorial you’ll place it in a folder named DAL (for Data Access Layer).
В Обозреватель решенийдобавьте папку проекта с именем DAL (убедитесь, что она находится под проектом, а не под решением). In Solution Explorer, add a project folder named DAL (make sure it’s under the project, not under the solution).
Щелкните правой кнопкой мыши папку DAL и выберите Добавить и новый элемент. Right-click the DAL folder and then select Add and New Item. В разделе Установленные шаблонывыберите данные, выберите шаблон ADO.NET EDM , назовите его счулмодел. EDMXи нажмите кнопку Добавить. Under Installed Templates, select Data, select the ADO.NET Entity Data Model template, name it SchoolModel.edmx, and then click Add.
Запустится мастер EDM. This starts the Entity Data Model Wizard. На первом шаге мастера параметр создать из базы данных выбран по умолчанию. In the first wizard step, the Generate from database option is selected by default. Щелкните Далее. Click Next.
На шаге Выбор подключения к данным оставьте значения по умолчанию и нажмите кнопку Далее. In the Choose Your Data Connection step, leave the default values and click Next. База данных School выбирается по умолчанию, а параметр подключения сохраняется в файле Web. config как пункт SchoolEntities. The School database is selected by default and the connection setting is saved in the Web.config file as SchoolEntities.
На шаге мастера Выбор объектов базы данных выберите все таблицы, кроме sysdiagrams (которая была создана для созданной ранее схемы), а затем нажмите кнопку Готово. In the Choose Your Database Objects wizard step, select all of the tables except sysdiagrams (which was created for the diagram you generated earlier) and then click Finish.
После завершения создания модели Visual Studio отобразит графическое представление объектов Entity Framework (сущностей), соответствующих таблицам базы данных. After it’s finished creating the model, Visual Studio shows you a graphical representation of the Entity Framework objects (entities) that correspond to your database tables. (Как и в случае диаграммы базы данных, расположение отдельных элементов может отличаться от того, что вы видите на этом рисунке. (As with the database diagram, the location of individual elements might be different from what you see in this illustration. При необходимости можно перетаскивать элементы вокруг рисунка.) You can drag the elements around to match the illustration if you want.)
Изучение модели данных Entity Framework Exploring the Entity Framework Data Model
Вы видите, что схема сущностей очень похожа на диаграмму базы данных с несколькими различиями. You can see that the entity diagram looks very similar to the database diagram, with a couple of differences. Одно отличие заключается в добавлении символов в конце каждой ассоциации, указывающей тип ассоциации (связи между таблицами называются ассоциациями сущностей в модели данных): One difference is the addition of symbols at the end of each association that indicate the type of association (table relationships are called entity associations in the data model):
Ассоциация «один к нулю» представляется «1» и «0.. 1». A one-to-zero-or-one association is represented by «1» and «0..1».
В этом случае сущность Person может быть связана с сущностью OfficeAssignment и не может быть связанной с ней. In this case, a Person entity may or may not be associated with an OfficeAssignment entity. Сущность OfficeAssignment должна быть связана с сущностью Person . An OfficeAssignment entity must be associated with a Person entity. Другими словами, инструктор может быть назначен для офиса, а любой офис может быть назначен только одному преподавателю. In other words, an instructor may or may not be assigned to an office, and any office can be assigned to only one instructor.
Ассоциация «один ко многим» представляется «1» и «*». A one-to-many association is represented by «1» and «*».
В этом случае сущность Person может иметь и не иметь связанных сущностей StudentGrade . In this case, a Person entity may or may not have associated StudentGrade entities. Сущность StudentGrade должна быть связана с одной сущностью Person . A StudentGrade entity must be associated with one Person entity. StudentGrade сущности фактически представляют зарегистрированные курсы в этой базе данных; Если учащийся зарегистрирован в курсе, но еще не существует, свойство Grade имеет значение null. StudentGrade entities actually represent enrolled courses in this database; if a student is enrolled in a course and there’s no grade yet, the Grade property is null. Другими словами, студент не может быть зарегистрирован в каких-либо курсах, может быть зарегистрирован в одном курсе или может быть зарегистрирован в нескольких курсах. In other words, a student may not be enrolled in any courses yet, may be enrolled in one course, or may be enrolled in multiple courses. Каждая категория в зарегистрированном курсе относится только к одному студенту. Each grade in an enrolled course applies to only one student.
Ассоциация «многие ко многим» представлена «*» и «*». A many-to-many association is represented by «*» and «*».
В этом случае сущность Person может иметь и не иметь связанных сущностей Course , а также обратная связь имеет значение true: Course сущность может иметь или не иметь связанные сущности Person . In this case, a Person entity may or may not have associated Course entities, and the reverse is also true: a Course entity may or may not have associated Person entities. Другими словами, инструктор может обучать несколько курсов, и курс может обучаться нескольким преподавателям. In other words, an instructor may teach multiple courses, and a course may be taught by multiple instructors. (В этой базе данных эта связь относится только к инструкторам; она не связывает учащихся с курсами. (In this database, this relationship applies only to instructors; it does not link students to courses. Студенты связаны с курсами по таблице Студентградес.) Students are linked to courses by the StudentGrades table.)
Еще одно различие между диаграммой базы данных и моделью данных — это дополнительный раздел свойств навигации для каждой сущности. Another difference between the database diagram and the data model is the additional Navigation Properties section for each entity. Свойство навигации сущности ссылается на связанные сущности. A navigation property of an entity references related entities. Например, свойство Courses в сущности Person содержит коллекцию всех Course сущностей, связанных с этой сущностью Person . For example, the Courses property in a Person entity contains a collection of all the Course entities that are related to that Person entity.
Еще одним различием между базой данных и моделью данных является отсутствие CourseInstructor таблицы взаимосвязей, используемой в базе данных для связывания Person и Course таблиц в связи «многие ко многим». Yet another difference between the database and data model is the absence of the CourseInstructor association table that’s used in the database to link the Person and Course tables in a many-to-many relationship. Свойства навигации позволяют получать связанные сущности Course из сущности Person и связанных сущностей Person из сущности Course , поэтому нет необходимости представлять таблицу взаимосвязей в модели данных. The navigation properties enable you to get related Course entities from the Person entity and related Person entities from the Course entity, so there’s no need to represent the association table in the data model.
Для целей этого учебника Предположим, что столбец FirstName таблицы Person фактически содержит имя и отчество человека. For purposes of this tutorial, suppose the FirstName column of the Person table actually contains both a person’s first name and middle name. Необходимо изменить имя поля, чтобы оно отражало это, но администратору базы данных (DBA) может не понадобиться изменить базу данных. You want to change the name of the field to reflect this, but the database administrator (DBA) might not want to change the database. Можно изменить имя свойства FirstName в модели данных, оставляя эквивалентную базу данных неизменной. You can change the name of the FirstName property in the data model, while leaving its database equivalent unchanged.
В конструкторе щелкните правой кнопкой мыши элемент FirstName в Person сущности и выберите команду Переименовать. In the designer, right-click FirstName in the Person entity, and then select Rename.
Введите новое имя «FirstMidName». Type in the new name «FirstMidName». Это изменяет способ ссылки на столбец в коде, не изменяя базу данных. This changes the way you refer to the column in code without changing the database.
Обозреватель моделей предоставляет другой способ просмотра структуры базы данных, структуры модели данных и сопоставления между ними. The model browser provides another way to view the database structure, the data model structure, and the mapping between them. Чтобы увидеть его, щелкните правой кнопкой мыши пустую область в конструкторе сущностей и выберите пункт Обозреватель моделей. To see it, right-click a blank area in the entity designer and then click Model Browser.
В области Обозреватель моделей отображается представление в виде дерева. The Model Browser pane displays a tree view. (Панель « Обозреватель моделей » может быть закреплена с панелью « Обозреватель решений ».) Узел счулмодел представляет структуру модели данных, а узел счулмодел. Store представляет структуру базы данных. (The Model Browser pane might be docked with the Solution Explorer pane.) The SchoolModel node represents the data model structure, and the SchoolModel.Store node represents the database structure.
Разверните счулмодел. Store , чтобы просмотреть таблицы, разверните таблицы или представления , чтобы просмотреть таблицы, а затем разверните узел Course , чтобы просмотреть столбцы в таблице. Expand SchoolModel.Store to see the tables, expand Tables / Views to see tables, and then expand Course to see the columns within a table.
Разверните узел счулмодел, разверните узел типы сущностей, а затем разверните узел Course , чтобы просмотреть сущности и свойства в сущностях. Expand SchoolModel, expand Entity Types, and then expand the Course node to see the entities and the properties within the entities.
В конструкторе или на панели обозревателя моделей можно увидеть, как Entity Framework связывает объекты двух моделей. In either the designer or the Model Browser pane you can see how the Entity Framework relates the objects of the two models. Щелкните правой кнопкой мыши сущность Person и выберите пункт Сопоставление таблиц. Right-click the Person entity and select Table Mapping.
Откроется окно сведения о сопоставлении . This opens the Mapping Details window. Обратите внимание, что это окно позволяет увидеть, что столбец базы данных FirstName сопоставлен с FirstMidName , который был переименован в модели данных. Notice that this window lets you see that the database column FirstName is mapped to FirstMidName , which is what you renamed it to in the data model.