Поделиться через


Как добавить объект в качестве источника данных проекта (платформа Entity Framework)

Можно создавать источники данных на основании объектов из приложения Visual Studio. После того как в проекте будет определен тип сущности как источник данных, появляется возможность создавать формы, отображающие данные из модели EDM, путем простого перетаскивания элементов из окна Источники данных в формы. Эти элементы становятся в форме элементами управления, привязанными к источнику данных. Дополнительные сведения см. в разделе Привязка объектов к элементам управления (платформа Entity Framework).

В этом разделе будет создан источник данных для типа SalesOrderHeader в модели Adventure Works Sales. Затем этот источник данных будет использован для создания формы Windows, в которой элементы управления привязаны к данным сущности. Чтобы завершить эти процедуры, необходимо добавить в проект модель AdventureWorks Sales и настроить проект для использования платформы Entity Framework. Для этого выполните действия, описанные в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

Создание источника данных на основе типов SalesOrderHeader

  1. Если перед этим была добавлена модель EDM, постройте проект.

  2. В меню Данные выберите команду Добавить новый источник данных.

  3. На странице Выбор типа источника данных выберите тип Объект.

  4. На странице Выбор объекта для привязки раскройте узел проекта и найдите узел AdventureWorksModel.

  5. Раскройте узел AdventureWorksModel и выберите тип SalesOrderHeader в древовидном представлении.

  6. Нажмите кнопку Готово.

    Источник данных SalesOrderHeader добавлен в окно Источники данных.

Добавление в форму Windows элементов управления, привязанных к источнику данных

  1. В окне Источники данных раскройте узел AdventureWorksModel, а затем узел SalesOrderHeader.

  2. Перетащите одно или несколько свойств из узла SalesOrderHeader в форму.

    Это приведет к созданию источника привязки salesOrderHeaderBindingSource и элементов управления salesOrderHeaderBindingNavigator в форме. В форме также будет создано по одному привязанному к данным элементу управления для каждого свойства в сочетании с элементами управления меткой, имеющими соответствующие заголовки.

  3. Перетащите в форму свойство навигации SalesOrderDetail.

  4. Это приведет к созданию элемента управления salesOrderDetailBindingSource и присваиванию свойству DataSource этого элемента управления значения salesOrderHeaderBindingSource, а свойству DataMember — значения SalesOrderDetail. Кроме того, в форме будет создан привязанный к данным элемент управления salesOrderDetailDataGridView в сочетании с элементом управления меткой, имеющим соответствующий заголовок.

Привязка источника данных к результату запроса объектов

  1. Откройте страницу кода формы и добавьте следующие инструкции using (Imports в Visual Basic):

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  2. В разделяемый класс, определяющий форму, добавьте следующий код, который создает экземпляр объекта ObjectContext и определяет константу customerID.

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. В конструкторе форм дважды щелкните форму.

    После этого будет открыта страница кода формы и создан метод обработчика события Load для этой формы.

  4. Скопируйте и вставьте в обработчике события 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)
Привязка данных сущностей к элементам управления (сценарии приложений)