2008-05-18

ADO.NET Entity Data Model und EntityDataSource in Visual Studio 2008

In diesem Beitrag möchte ich mit einer Step-by-Step Anleitung euch zeigen, wie wir einfach und schnell eine einfache ASP.NET Web Application-Anwendung erstellen mit der wir die Daten in einer Datenbanktabelle anzeigen und bearbeiten können.

Dabei werde ich mit Visual Studio 2008 Service Pack 1 Beta veröffentliche ADO.NET Entity Model und EntityDataSource Komponente (Component) als Datenbank-Schnittstelle verwenden.

Schritt 1: Ein neues ASP.NET Web Application Projekt erstellen

Visual Studio 2008 starten und Menü Eintrag File - New Project auswählen.

Anschließend Visual C# - ASP.NET Web Application Template auswählen und EntityDataSourceSample0002 als Projektname definieren.

Step001 - Add New Project - ASP.NET Web Application

Schritt 2: Als nächstes Erstellen wir eine ADO.NET Entity Data Model-Klasse

Mit Hilfe des Project - Add Component Menü Eintrag den Auswahl-Dialog für Projekt-Elemente starten.

Im Dialog ADO.NET Entity Data Model-Element auswählen und AdventureWorks.edmx als Name definieren.

Step002 - Add New Item - ADO.NET Entity Data Model

Schritt 2a: Entity Data Model Wizard-Dialog

Im Wizard "Generate from database"-Element auswählen.

Step002a - Entity Data Model Wizard - Generate from database

Schritt 2b: Datenbank-Verbindung (Database connection)

In diesem Dialog definieren wir die Datenbank-Verbindung (Database connection). Zusätzlich wird auch der Name des Web.Config-Eintrages für die ConnectionString definiert.

In dem folgenden Beispiel wird ein SQL Server 2008 mit der AdventureWorks-Datenbank verwendet und der Eintrag im Web.Config-File heißt AdventureWorksEntitites.

Step002b - Choose Your Data Connection

Schritt 2c: Datenbank-Objekt (Database object) auswählen

Erst hier definieren wir, welche Datenbank-Tabelle(n) (Database table(s)) für unser Model relevant sind.

In dem folgenden Beispiel wird nur die CountryRegion-Tabelle ausgewählt. Zusätzlich wird der Name für den Model Namespace definiert. Im Beispiel wird AdventureWorksModel als Namespace verwendet.

Step002c - Choose Your Database Objects

Als Resultat erhalten wird unser AdventureWorks-Model mit der CountryRegion-Entity Klasse (Entity Class)

Step002d - AdventureWorksModel - CountryRegion Entity

Schritt 3: EntityDataSource-Komponente (Component)

In diesem Schritt werden wir die EntityDataSource-Komponente in unsere Seite einbinden und Konfigurieren.

Wir wechseln in das Design-Modus des Default.aspx-Elements. Einfach Solution Explorer auswählen und auf das Default.aspx-Element doppelklicken.

Im Toolbox unter dem Abschnitt Data sehen wir unseren EntityDataSource-Komponente (Component).

Step003 - EntityDataSource

Mit Drag & Drop die EntityDataSource-Komponente (Component) auf das Default.aspx-Element ziehen und los lassen.

Schritt 3a: EntityDataSource - DataSource-Eigenschaft konfigurieren (Configure Data Source)

Als nächstes werden wir die DataSource-Eigenschaft der EntityDataSource-Komponente konfigurieren. Für die Konfiguration kann der Eintrag Configure Data Source (wie im untenstehenden Bild ersichtlich) ausgewählt werden.

Step003a - EntityDataSource - Configure Data Source

Schritt 3b: ObjectContext-Konfigurieren (Configure ObjectContext)

Die ConnectionString und DefaultContainerName Informationen werden im folgenden Dialog definiert.

"Die Beta 1 des Visual Studio 2008 Service Packs hat leider einen Fehler (Bug). Ich werde euch zeigen, wie man diesen Fehler umgehen kann."

Namen Connection markieren und den Eintrag AdventureWorksEntities auswählen.

Step003b - EntityDataSource - ConnectionString

Wenn wir versuchen, den DefaultContainerName-Eigenschaft zu definieren, dann erhalten wir folgenden Fehlermeldung (Fehler (Bug) in Visual Studio 2008 ServicePack 1 Beta): The Entity Data Model metadata specified in the connection string could not be loaded due the following error(s): Unable to load specified metadata resource.

Step003c - EntityDataSource - Error - DefaultContainerName

Schritt 3c: Fehler (Bug) Korrektur

Die Fehlermeldung mit OK bestätigen und den Wizard mit Cancel abbrechen.

In der Web.Config-Datei wurde im Abschnitt ConnectionString ein falscher Eintrag verursacht diesen Fehler:

Step003ca - EntityDataSource - Error - DefaultContainerName - Correction

Die "*" müssen mit dem Projektnamen (Project name) bzw. Assemlby-Namen (Assembly name) ersetzt werden.

Step003cb - EntityDataSource - Error - DefaultContainerName - Correction

Die Datei speichern und neu KOMPILIEREN (Build).

Anschließend nochmals zurück auf das Design-Modus der Default.aspx-Seite wechseln und den EntityDataSource-Element konfigurieren (siehe Schritt 3a).

Schritt 3d: DefaultContainerName auswählen

Als DefaultContainerName den Eintrag AdventureWorksEntites auswählen.

Step003d - EntityDataSource - DefaultContainerName

Schritt 3e: Daten-Selektion konfigurieren (Configure Data Selection)

In diesem Schritt definieren wir, welche Funktionalitäten für unsere CountryRegion-Klasse zur Verfügung stellen soll.

Gemäß folgende Bild die Einstellungen vornehmen und den Dialog mit Finish abschließen.

Step003e - EntityDataSource - Configure Data Selection

Schritt 4: GridView-Element für die Datenanzeige und Bearbeitung

Für die Anzeige und Bearbeitung der Daten benötigen wir ein GridView-Element. Einfach ein neues GridView-Element mit Drag & Drop auf die Default.aspx-Seite ziehen.

Step004 - DataGridView

Schritt 4a: GridView DataSource-Eigenschaft (Property)

Als nächstes konfigurieren wir die Data Source-Eigenschaft (Property) des GridView-Controls. Als Data Source den EntityDataSource1-Eintrag auswählen.

Step004a - DataGridView - Choose Data Source

Unser GridView-Control wie folgt aus:

Bitte hier auch die Optionen Enable Paging, Enable Sorting, Enable Editing, Enable Deleting und Enable Selection auch ankreuzen.

Step004b - DataGridView - GridView Tasks

Jetzt können wir unser Beispiel-Projekt mit F5 starten.

Wenn bei euch auch die "Debugging Not Enabled"-Meldung erscheint, einfach mit OK weitermachen.

Step005 - Run - Modify the Web.config file to enable debugging

Nach eine "einbißchen lange" Wartezeit sehen wir in unserem Browser (in meinem Beispiel Internet Explorer) die Default.aspx-Seite mit GridView und die CountryRegion-Daten.

Step006 - Default.aspx in Internet Explorer

Das Beispielprojekt findet ihr unter: EntityDataSourceSample0002

Viel Spaß beim ausprobieren.

Für Feedbacks über die Kommentar-Funktionalität wäre ich dankbar, ob das Beispiel-Projekt bei euch auch funktioniert hat.

2 comments:

Anonymous said...

Schöne Anleitung.

Was in dieser Anleitung noch fehlt, wäre... z.B. neue Daten anlegen ;-)

Özgür Aytekin said...

Du hast recht.

Ich werde versuchen auch die Insert-Funktionalität zu implementieren.

Danke fürs Feedback.

Gruss
Özgür