Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Entity Framework können Sie Windows Form-Steuerelemente wie beispielsweise eine ComboBox oder ein DataGridView an eine EntityCollection oder ein ObjectQuery-Ergebnis binden. Es wird empfohlen, Steuerelemente nicht direkt an eine ObjectQuery zu binden. Stattdessen sollten die Steuerelemente an das Ergebnis der Execute-Methode gebunden werden. Weitere Informationen finden Sie unter Binden von Objekten an Steuerelemente (Entity Framework).
Das Beispiel in diesem Thema beruht auf dem AdventureWorks Sales-Modell. Um den Code in diesem Beispiel auszuführen, müssen Sie Ihrem Projekt bereits das "AdventureWorks Sales"-Modell hinzugefügt und das Projekt für die Verwendung von Entity Framework konfiguriert haben. Verwenden Sie hierzu das Verfahren aus Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren der Modell- und Zuordnungsdateien (Entity Framework).
Beispiel
Das folgende Beispiel stammt von Windows Form. Beim Laden des Formulars wird ein ObjectResult von SalesOrderHeader-Objekten durch Aufruf der Execute-Methode der ObjectQuery zurückgegeben. Dieses Ergebnis wird an ein Kombinationsfeld gebunden. Beim Auswählen einer Reihenfolge werden die zugehörigen EntityCollection der SalesOrderDetail-Objekte an ein DataGridView-Steuerelement gebunden.
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
namespace Microsoft.Samples.Edm
{
public partial class Main : Form
{
private AdventureWorksEntities context;
private int customerId = 277;
public Main()
{
// Initializes the designer-generated controls.
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
// Initialize the object context.
context = new AdventureWorksEntities();
try
{
// Create a query for orders that includes line items.
ObjectQuery<SalesOrderHeader> orderQuery = context.SalesOrderHeaders
.Where("it.CustomerID = @customerId",
new ObjectParameter("customerId", customerId))
.Include("SalesOrderDetails");
// Display the PO number in the combo box.
this.ordersListBox.DisplayMember = "PurchaseOrderNumber";
// Bind the combo box to the ObjectResult of SalesOrderHeader
// that is returned when the query is executed.
this.ordersListBox.DataSource = orderQuery.Execute(MergeOption.AppendOnly);
}
catch (EntitySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void ordersListBox_SelectedIndexChanged(object sender, EventArgs e)
{
// Get the currently selected SalesOrderHeader object.
SalesOrderHeader order = (SalesOrderHeader)this.ordersListBox.SelectedItem;
// Bind the items for this order to the DataGridView.
lineItemsDataGrid.DataSource = order.SalesOrderDetails;
}
private void saveButton_Click(object sender, EventArgs e)
{
// Get the current order.
SalesOrderHeader order = (SalesOrderHeader)ordersListBox.SelectedItem;
try
{
// Save changes in the object context.
context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
}
catch (OptimisticConcurrencyException)
{
// Resolve the concurrently conflict by refreshing the
// object context before saving changes.
context.Refresh(RefreshMode.ClientWins, order.SalesOrderDetails);
// Resave changes in the object context.
context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
}
catch (Exception ex)
{
MessageBox.Show(ex.InnerException.Message, "An error has occured");
}
finally
{
// Refresh the latest data from the database.
context.Refresh(RefreshMode.StoreWins, order);
this.Refresh();
}
}
}
}
Siehe auch
Aufgaben
Gewusst wie: Binden von Objekten an Windows Presentation Foundation-Steuerelemente (Entity Framework)
Gewusst wie: Hinzufügen eines Objekts als Projektdatenquelle (Entity Framework)