Share via


Cómo agregar un objeto como origen de datos del proyecto (Entity Framework)

Puede crear orígenes de datos que se basen en objetos en una aplicación Visual Studio. Después de definir un tipo de entidad como un origen de datos en un proyecto, puede crear formularios que muestren los datos del Entity Data Model (EDM) arrastrando los elementos de la ventana Orígenes de datos a los formularios. Estos elementos se convierten en el formulario en controles que se enlazan al origen de datos. Para obtener más información, vea Enlazar objetos a controles (Entity Framework).

En este tema, creará un origen de datos para el tipo SalesOrderHeader en el modelo de Adventure Works Sales. A continuación, utilizará este origen de datos para crear un formulario Windows Forms con controles que se enlazan a los datos de la entidad. Para completar estos procedimientos, debe haber agregado el modelo AdventureWorks Sales al proyecto y haber configurado el proyecto para que use Entity Framework. Para ello, complete los procedimientos de Cómo usar el Asistente para Entity Data Model (Entity Framework).

Para crear un origen de datos basado en los tipos SalesOrderHeader

  1. Si ha agregado el Entity Data Model (EDM) recientemente, genere el proyecto.

  2. En el menú Datos, haga clic en Agregar nuevo origen de datos.

  3. En la página Elegir un tipo de origen de datos, seleccione Objeto.

  4. En la página Seleccione un objeto que enlazar a, expanda el nodo de proyecto y busque el nodo AdventureWorksModel.

  5. Expanda el nodo AdventureWorksModel y seleccione el tipo SalesOrderHeader en la vista de árbol.

  6. Haga clic en Finalizar.

    El origen de datos SalesOrderHeader se agrega a la ventana Orígenes de datos.

Para agregar controles enlazados del origen de datos a un formulario Windows Forms

  1. En la ventana Orígenes de datos, expanda el nodo AdventureWorksModel y, a continuación, expanda el nodo SalesOrderHeader.

  2. Arrastre una o más propiedades del nodo SalesOrderHeader hasta el formulario.

    De esta forma se crean los controles salesOrderHeaderBindingNavigator y salesOrderHeaderBindingSource en el formulario. En el formulario también se crea un control enlazado a datos para cada propiedad, acompañado de un control de etiqueta con el título apropiado.

  3. Arrastre la propiedad de navegación SalesOrderDetail hasta el formulario.

  4. De esta forma se crea el control salesOrderDetailBindingSource con la propiedad DataSource del control establecida en salesOrderHeaderBindingSource y la propiedad DataMember establecida en SalesOrderDetail. También se crea el control enlazado a datos salesOrderDetailDataGridView en el formulario, acompañado de un control de etiqueta con el título apropiado.

Para enlazar el origen de datos al resultado de una consulta de objeto

  1. Abra la página de códigos del formulario y agregue las instrucciones using siguientes (Imports en Visual Basic):

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  2. En la clase parcial que define el formulario, aguegue el código siguiente que crea una instancia de ObjectContext y define la constante customerID.

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. En el diseñador de formularios de , haga doble clic en el formulario .

    De esta forma se abre la página de códigos del formulario y se crea el método que administra el evento Load para el formulario.

  4. En el controlador de eventos Load, copie y pegue el siguiente código.

    ' 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);
    }
    

    Este código ejecuta una consulta que devuelve una recopilación de los objetos SalesOrderDetail relacionados y SalesOrderHeader para un cliente concreto, y enlaza la recopilación de los objetos SalesOrderHeader a salesOrderHeaderBindingSource.

Vea también

Tareas

Cómo enlazar objetos a controles de Windows Presentation Foundation (Entity Framework)
Cómo enlazar objetos a controles de Windows Forms (Entity Framework)

Conceptos

Enlazar objetos a controles (Entity Framework)
Enlazar datos de entidad a controles (escenarios de aplicación)