2008-08-21

ADO.NET Entity Framework - Erstellen eines Entity Data Models mit Visual Studio 2008 und SQL Server 2008

Dieser Beitrag beschreibt mit einer Step-by-Step Einleitung die Erstellung eines Entity Models mit Visual Studio 2008 und SQL Server 2008.

Für das folgende Beispielprojekt wird Visual Studio 2008 mit SP1 (Service Pack 1) und SQL Server 2008 mit Adventure Works-Datenbank benötigt.

Schritt 1: Als Erstes erstellen wir ein neues Projekt:

Im Visual Studio 2008 - File - New - Project auswählen. Als Projekttyp wählen wir Console Application. Projektname-Projectname EntityFrameworkSample0010 definieren.

image

Schritt 2: Als Nächstes benötigen wir ein Entity Model-File. Project - Add New Item auswählen.

image

Schritt 2a: Und anschliessend ADO.NET Entity Data Model auswählen und AdventureWorks.edmx als Filename eingeben. Es ist üblich, dass der Datenbankname als Entity Data Model-Name verwendet wird.

image

Schritt 2c: Nach dem wir Add-Button geklickt haben, wir der Entity Data Model Wizard. In diesem Wizard können wir auswählen, ob wir aus einer bestehenden Datenbank unser Entity Data Model erstellen möchten (Generate from database) oder ob wir ein leeres Entity Data Model-File benötigen (Empty Model).

Für unser Beispiel selektieren wir Generate from database und dann mit Next-Button weitermachen.

image

Schritt 2d: Damit der Wizard die Metadaten-Meta Data für unser Entity Data Model aus der Datenbank lesen kann, benötigen wir eine Datenbankverbindung-Database Connection. In der Auswahlliste werden die Datenbankverbindungen angezeigt, die im Server Explorer-Fenster auch aufgelistet werden.

Für eine neue Datenbankverbindung New Connection-Button klicken oder die Datenbankverbindung für AdventureWorks-Datenbank auswählen.

image

Schritt 2e: Wenn wir mit New Connection weitermachen, dann erscheint ein Dialog (Choose Data Source), in dem wir den Data Provider auswählen können.

image

Schritt 2f: In diesem Dialog benötigen wir die Angaben zum SQL Server und Datenbank.

Als Server name müssen wir den Instanznamen-Instance name unseren SQL Server 2008 angeben. Zusätzlich müssen wir definieren, ob wir Windows Authentication oder SQL Server Authentication für die Anmeldung an SQL Server verwenden möchten. Nach dem wir Instanznamen und Authentication-Angaben definiert haben, können wir die Datenbank auswählen.

image

Schritt 2g: Nach dem wir die Informationen über unser Datenbankserver und Datenbank definiert haben, werden die Angaben nochmals im folgenden Dialog angezeigt.

Im Feld Entity connection string sehen wir die Entity Data Model Spezifisches Information, die ich in einem späteren Blog-Eintrag im Detail erklären werde. In dem unteren Feld sehen wir den Namen des App.Config Eintrages.

image

Als Nächstes müssen wir den Inhalt unseren Entity Data Models definieren.

Schritt 3: In diesem Schritt wählen wir die Datenbanktabelle für unser Entity Data Model aus. Für das aktuelle Beispiel-Projekt benötigen wir nur drei Tabellen (Product, ProductCategory, ProductSubCategory).

image

Anschliessend mit Finish-Button können wir unseren Wizard beenden.

image

Als Resultat erhalten wir unseren Entity Data Model mit drei Entities (ProductCategory > ProductSubCategory > Product).

image

Nach dem wir unseren Entity Data Model erstellt haben, können wir die Daten aus der Datenbank lesen und ausgeben.

Schritt 4: Wir ergänzen den bereits erstellten Console Application-Code wie folgt:

Der folgende Beispielcode listet alle Produkt-Kategorien (Product categories), die Sub-Kategorien (Product sub categories) und die Produkten (Products) auf.

using System;
using System.Linq;

namespace EntityFrameworkSample0010
{
class Program
{
static void Main(string[] args)
{
using (AdventureWorks2008Entities db = new AdventureWorks2008Entities())
{
foreach(ProductCategory pc in db.ProductCategory)
{
Console.WriteLine("ProductCategory: " + pc.Name);

foreach(ProductSubcategory psc in db.ProductSubcategory.Where(p => p.ProductCategory.ProductCategoryID == pc.ProductCategoryID))
{
Console.WriteLine("ProductSubCategory: " + psc.Name);

foreach (Product p in db.Product.Where(pp => pp.ProductSubcategory.ProductSubcategoryID == psc.ProductSubcategoryID))
{
Console.WriteLine("Product: " + p.Name);
}

Console.WriteLine();
}

Console.WriteLine();
}

Console.ReadLine();
}
}
}
}

In der folgende Zeile werden die Sub-Kategorien einer Produkt-Kategorie mit Hilfe der Where-Operators selektiert und ausgegeben.

foreach(ProductSubcategory psc in db.ProductSubcategory.Where(p => p.ProductCategory.ProductCategoryID == pc.ProductCategoryID))
{
Console.WriteLine("ProductSubCategory: " + psc.Name);

...
}


Jetzt können wir unseren Code mit F5 kompilieren. Die Ausgabe sieht wie folgt aus:

image

Für Fragen zu diesem Thema bin ich für Euch über die Kommentar-Funktionalität erreichbar.


Viel Spass...

No comments: