Entitiy Framework : Eine Stored Procedures auf eine Entität abbilden

Wenn eine Stored Procedure Resultate zurück gibt, die keiner Entity entsprechen, dann hat man ein Problem. Als Workaround (bei Verions 1.0) kann man eine View definieren, die genau die Felder enthält, welche die Stored Procedure zurückliefert. Die View muss keine Daten zurück liefern. Z.B.

CREATE View [dbo].[vTest]
AS
SELECT
Convert(int, 1) AS ProductID,
Convert(bit, 1) as IsVisible,
'' as Name

Diese View kann man ins Modell integrieren. Mit Hilfe des Model-Browsers kann man dann die Stored Procdure importieren (EntityContainer->FunctionImports). Die Stored Procedure wird dann als Funktion des ObjectContext aufrufbar.

Achtung: Die von der View generierte Entität hat eventuell falsche Keys. Bei mir wurden deshalb Datensätze mit leerem Inhalt zurückgeliefert (ab dem 2. Datensatz). Man kann die Keys aber manuell ändern im Xml-File und jetzt funktioniert es problemlos.

 

Kommentar schreiben