Condividi tramite


Procedura: aggiungere un oggetto come origine dati progetto (Entity Framework)

È possibile creare origini dati basate sugli oggetti in un'applicazione Visual Studio. Dopo avere definito un tipo di entità come origine dati in un progetto, è possibile creare form che visualizzano dati EDM (Entity Data Model) trascinando elementi dalla finestra Origini dei dati nei form. Nel form tali elementi diventano controlli associati all'origine dati. Per ulteriori informazioni, vedere Associazione di oggetti ai controlli (Entity Framework).

In questo argomento verrà creata un'origine dati per il tipo SalesOrderHeader nel modello Sales di Adventure Works. Tale origine dati verrà utilizzata per creare un Windows Form con controlli associati ai dati dell'entità. Per completare le procedure, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure descritte in Procedura: utilizzare la procedura guidata Entity Data Model (Entity Framework).

Per creare un'origine dati basata sui tipi SalesOrderHeader

  1. Se è stato aggiunto recentemente il modello EDM (Entity Data Model), compilare il progetto.

  2. Scegliere Aggiungi nuova origine dati dal menu Dati.

  3. Nella pagina Seleziona un tipo di origine dati selezionare Oggetto.

  4. Nella pagina Seleziona l'oggetto da associare espandere il nodo del progetto e individuare il nodo AdventureWorksModel.

  5. Espandere il nodo AdventureWorksModel e selezionare il tipo SalesOrderHeader nella visualizzazione albero.

  6. Fare clic su Fine.

    L'origine dati SalesOrderHeader viene aggiunta alla finestra Origini dei dati.

Per aggiungere controlli associati alle origini dati a un Windows Form

  1. Nella finestra Origini dei dati espandere il nodo AdventureWorksModel, quindi espandere il nodo SalesOrderHeader.

  2. Trascinare una o più proprietà dal nodo SalesOrderHeader nel form.

    Verranno creati i controlli salesOrderHeaderBindingSource e salesOrderHeaderBindingNavigator nel form. Nel form viene anche creato un controllo con associazione a dati per ogni proprietà, accompagnato da un controllo etichetta con un titolo corretto.

  3. Trascinare la proprietà di navigazione SalesOrderDetail nel form.

  4. Verrà creato il controllo salesOrderDetailBindingSource con la proprietà DataSource impostata su salesOrderHeaderBindingSource e la proprietà DataMember impostata su SalesOrderDetail. Nel form verrà inoltre creato il controllo con associazione a dati salesOrderDetailDataGridView, accompagnato da un controllo etichetta con titolo corretto.

Per associare l'origine dati al risultato di una query di oggetto

  1. Aprire la tabella codici per il form e aggiungere le istruzioni using seguenti (Imports in Visual Basic):

    Imports System.Data.Objects
    Imports AdventureWorksModel
    
    using System.Data.Objects;
    using AdventureWorksModel;
    
  2. Nella classe parziale che definisce il form aggiungere il codice seguente per creare un'istanza ObjectContext e definire la costante customerID.

    Dim context As AdventureWorksEntities
    Const customerId As Integer = 277
    
    private AdventureWorksEntities context;
    private const int customerId = 277;
    
  3. Nella finestra di progettazione dei form fare doppio clic sul form.

    Verrà visualizzata la tabella codici per il form e verrà creato il metodo che gestisce l'evento Load per il form.

  4. Nel gestore eventi Load copiare e incollare il codice riportato di seguito.

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

    Tale codice esegue una query che restituisce un insieme di oggetti SalesOrderHeader con gli oggetti SalesOrderDetail correlati per uno specifico cliente e associa l'insieme di oggetti SalesOrderHeader all'oggetto salesOrderHeaderBindingSource.

Vedere anche

Attività

Procedura: associare oggetti a controlli Windows Presentation Foundation (Entity Framework)
Procedura: associare oggetti a controlli Windows Form (Entity Framework)

Concetti

Associazione di oggetti ai controlli (Entity Framework)
Associare dati di entità a controlli (Scenari dell'applicazione)