SQL Practice Blog – SQL Server, BizTalk und .NET Erfahrungen

Entity Framework 4.0: Automatisch generierter Return Type

with one comment

Im Entity Framework 4.0 welches mit dem .NET Framework 4.0 ausgeliefert wird, kommt eine sehr spannende Neuerung. Es ist ja allgemein bekannt, das die Funktionalität von Stored Procedures im Entity Framework 1.0 nur sehr rudimentär umgesetzt wurde. Stored Procedures ohne bzw. mit Scalar Rückgabewerten wurden standardmäßig nicht unterstützt und waren erst nach einigen Modifikationen im XML Code möglich.

Diese Funktionalitäten sind im Entity Framework 4.0 nun voll integriert und desweiteren kommt noch ein neuer Rückgabewert hinzu, der sogenannte Complex Type. Complex Types erlauben das Gruppieren von Properties welche man in verschiedenen Entities / Klassen wiederverwenden kann. Somit ermöglichen Complex Types eine saubere Kapselung. Ebenso werden Complex Types genutzt um Rückgabewerte einer Stored Procedure in Objekten abbilden zu können, falls der Rückgabewert nicht auf das Muster einer bereits existierenden Klasse (Entity) zutrifft.

Ich möchte das ganze an einem Beispiel mit der Chinook Datenbank erläutern. Was die Chinook Datenbank ist, kann man hier finden und downloaden kann man diese auf Codeplex.

In unserem Beispiel werden wir nun mit der folgenden Stored Procedure arbeiten.

 stored_procedure

Diese Stored Procedure gibt die Details einer Bestellung zurück, welche vom Muster auf keine bestehende Klasse (Entity) passt. Deshalb werden wir hier mit einem Complex Type arbeiten.

execute_function_import

Als nächstes importieren wir die Stored Procedure in unser Entity Data Model.

Über den Eintrag “Add Function Import…” im Contextmenu wird die Stored Procedure dem Entity Data Model hinzugefügt. In dem nun erscheinenden Fenster kann man die Stored Procedure im SQL Server, den Namen der Storen Procedure im Entity Data Model und den jeweiligen Rückgabetyp auswählen.

Wir erwarten in unserem Beispiel einen Complex Type.

 

add_function_import

Klickt man auf den Button “Get Column Information” im Bereich “Stored Procedure Column Information”, so bekommt man eine Liste mit allen Rückgabespalten angezeigt. Über den Button “Create Complex Type” erstellt das Entity Framework einen Complex Type mit den Feldern:

  • TrackName
  • Quantity
  • UnitPrice
  • ExtendedPrice (Quantity * UnitPrice)

Dieser Complex Type kann nun im Code ganz normal instanziert und genutzt werden wie jede andere Klasse (Entity) des Entity Frameworks.

Written by Robert Meyer

Dezember 31, 2009 um 13:20

Eine Antwort

Subscribe to comments with RSS.

  1. […] Endlich kann man auch Stored Procedure mit einem Rückgabewert von Typ Void oder Skalar ohne Einschränkungen benutzen! Hinzugekommen ist ein neuer Rückgabewert, der Complex Type. Der Complex Type erlaubt es für einen Rückgabewert der nicht Skalar ist, aber auch auf keine Entitätsklasse passt, einen komplexen Datentyp anzulegen. Dieser komplexe Datentyp kann dann im Entity Framework genutzt werden und z.B. als Attribut in eine Entitätsklasse eingefügt werden. Mehr Infos dazu findet ihr in einem extra Blogeintrag. […]


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: