Как добавить объект в качестве источника данных проекта (платформа Entity Framework)
Можно создавать источники данных на основании объектов из приложения Visual Studio. После того как в проекте будет определен тип сущности как источник данных, появляется возможность создавать формы, отображающие данные из модели EDM, путем простого перетаскивания элементов из окна Источники данных в формы. Эти элементы становятся в форме элементами управления, привязанными к источнику данных. Дополнительные сведения см. в разделе Привязка объектов к элементам управления (платформа Entity Framework).
В этом разделе будет создан источник данных для типа SalesOrderHeader в модели Adventure Works Sales. Затем этот источник данных будет использован для создания формы Windows, в которой элементы управления привязаны к данным сущности. Чтобы завершить эти процедуры, необходимо добавить в проект модель AdventureWorks Sales и настроить проект для использования платформы Entity Framework. Для этого выполните действия, описанные в разделе Как использовать мастер моделей EDM (платформа Entity Framework).
Создание источника данных на основе типов SalesOrderHeader
Если перед этим была добавлена модель EDM, постройте проект.
В меню Данные выберите команду Добавить новый источник данных.
На странице Выбор типа источника данных выберите тип Объект.
На странице Выбор объекта для привязки раскройте узел проекта и найдите узел AdventureWorksModel.
Раскройте узел AdventureWorksModel и выберите тип SalesOrderHeader в древовидном представлении.
Нажмите кнопку Готово.
Источник данных SalesOrderHeader добавлен в окно Источники данных.
Добавление в форму Windows элементов управления, привязанных к источнику данных
В окне Источники данных раскройте узел AdventureWorksModel, а затем узел SalesOrderHeader.
Перетащите одно или несколько свойств из узла SalesOrderHeader в форму.
Это приведет к созданию источника привязки salesOrderHeaderBindingSource и элементов управления salesOrderHeaderBindingNavigator в форме. В форме также будет создано по одному привязанному к данным элементу управления для каждого свойства в сочетании с элементами управления меткой, имеющими соответствующие заголовки.
Перетащите в форму свойство навигации SalesOrderDetail.
Это приведет к созданию элемента управления salesOrderDetailBindingSource и присваиванию свойству DataSource этого элемента управления значения salesOrderHeaderBindingSource, а свойству DataMember — значения SalesOrderDetail. Кроме того, в форме будет создан привязанный к данным элемент управления salesOrderDetailDataGridView в сочетании с элементом управления меткой, имеющим соответствующий заголовок.
Привязка источника данных к результату запроса объектов
Откройте страницу кода формы и добавьте следующие инструкции using (Imports в Visual Basic):
Imports System.Data.Objects Imports AdventureWorksModel
using System.Data.Objects; using AdventureWorksModel;
В разделяемый класс, определяющий форму, добавьте следующий код, который создает экземпляр объекта ObjectContext и определяет константу customerID.
Dim context As AdventureWorksEntities Const customerId As Integer = 277
private AdventureWorksEntities context; private const int customerId = 277;
В конструкторе форм дважды щелкните форму.
После этого будет открыта страница кода формы и создан метод обработчика события Load для этой формы.
Скопируйте и вставьте в обработчике события Load следующий код.
' Initialize the object context. context = New AdventureWorksEntities() Try ' Create a query for orders and related items. Dim orderQuery As ObjectQuery(Of SalesOrderHeader) = _ context.SalesOrderHeader _ .Where("it.CustomerID = @customerId", _ New ObjectParameter("customerId", customerId)) _ .Include("SalesOrderDetail") ' Set the data source of the binding source to the ObjectResult ' returned when the query is executed. SalesOrderHeaderBindingSource.DataSource = _ orderQuery.Execute(MergeOption.AppendOnly) Catch ex As EntitySqlException MsgBox(ex.Message) End Try
// Initialize the object context. context = new AdventureWorksEntities(); try { // Create a query for orders and related items. ObjectQuery<SalesOrderHeader> orderQuery = context.SalesOrderHeader .Where("it.CustomerID = @customerId", new ObjectParameter("customerId", customerId)) .Include("SalesOrderDetail"); // Set the data source of the binding source to the ObjectResult // returned when the query is executed. salesOrderHeaderBindingSource.DataSource = orderQuery.Execute(MergeOption.AppendOnly); } catch (EntitySqlException ex) { MessageBox.Show(ex.Message); }
Этот код выполняет запрос, который возвращает коллекцию объектов SalesOrderHeader и связанных с ними объектов SalesOrderDetail для конкретного заказчика, а также привязывает коллекцию объектов SalesOrderHeader к salesOrderHeaderBindingSource.
См. также
Задачи
Как выполнить привязку объектов к элементам управления WPF (платформа Entity Framework)
Как привязать объекты к элементам управления Windows Form (платформа Entity Framework)
Основные понятия
Привязка объектов к элементам управления (платформа Entity Framework)
Привязка данных сущностей к элементам управления (сценарии приложений)