Codice dell'applicazione di esempio di associazione dati di AdventureWorks (applicazione di esempio EDM)

Nel modello EDM (Entity Data Model) l'applicazione di associazione dati di AdventureWorks include due gestori eventi che caricano e modificano i dati. Il codice che carica un oggetto SalesOrderHeader e le entità SalesOrderDetail associate viene eseguito quando l'utente fa clic su buttonGetHeader. Le modifiche ai dati contenuti in un'entità SalesOrderDetail vengono inviate al gestore eventi della griglia di dettagli dell'ordine cellEndEdit.

Codice dell'applicazione

Il codice per il Windows Form principale utilizzato nell'applicazione di associazione dati di AdventureWorks è illustrato di seguito:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdventureWorksModel;
using System.Data.Objects;

namespace AdWksSalesWinDataBind
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            objCtx = new AdventureWorksEntities();
            
        }

        private void buttonGetHeader_Click(object sender, EventArgs e)
        {
            if (textBoxOrderId.Text.Equals(""))
            {
                MessageBox.Show("Add Sales Order Header Number", 
                    "No Header Number");
                return;
            }
            ObjectParameter parameter =
                new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));

            dataGridViewSOHeader.DataSource = objCtx.SalesOrderHeader.Where(
                "it.SalesOrderID == @p", parameter).Execute(MergeOption.OverwriteChanges);

            if(objCtx.SalesOrderHeader.Where(
                "it.SalesOrderID == @p", parameter).Any())
            {
                SalesOrderHeader resultHeader =
                    objCtx.SalesOrderHeader.Where(
                    "it.SalesOrderID == @p", parameter).First();

                resultHeader.SalesOrderDetail.Load();
                dataGridViewOrderDetails.DataSource = resultHeader.SalesOrderDetail;

            }
            else
                MessageBox.Show(
                    "No Sales Order Header matches this key", 
                    "No Match");
            
        }

        private void Form1_FormClosing(object sender, 
            FormClosingEventArgs e)
        {
            objCtx.Connection.Close();
            objCtx.Dispose();
        }

        private void dataGridViewSOHeader_CellEndEdit(object sender,
            DataGridViewCellEventArgs e)
        {
            objCtx.SaveChanges();
            
        }

        private void dataGridViewOrderDetails_CellEndEdit(object sender,
            DataGridViewCellEventArgs e)
        {
            objCtx.SaveChanges();

            ObjectParameter parameter =
                new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));

            SalesOrderHeader header =
                objCtx.SalesOrderHeader.Where(
                "it.SalesOrderID == @p", parameter).FirstOrDefault();

            // Refresh the SalesOrderHeader in the grid.
            objCtx.Refresh(RefreshMode.StoreWins, header);

        }

        private void buttonAddSalesOrder_Click(object sender, EventArgs e)
        {  
            FormAddSalesOrderDetail formAddSODetail = new FormAddSalesOrderDetail(objCtx);
        
            DialogResult dlgResult = formAddSODetail.ShowDialog(this);

            if(dlgResult.Equals(DialogResult.OK))
            {
                ObjectParameter parameter =
                new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));

                SalesOrderHeader header =
                    objCtx.SalesOrderHeader.Where(
                    "it.SalesOrderID == @p", parameter).FirstOrDefault();

                // Refresh the SalesOrderDetails in the grid.
                buttonGetHeader_Click(null, null);
                
            }

        }

        private void textBoxOrderId_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.Return))
                buttonGetHeader_Click(this, System.EventArgs.Empty);

        }

        
        
    }
}

Vedere anche

Concetti

Associazione dati di Adventure Works (applicazione di esempio EDM)
Associazione dati di AdventureWorks per l'aggiunta del form Add SalesOrderDetail (applicazione di esempio EDM)