2012-03-29 22 views
3

Ich brauche einen Hinweis zur Verwendung gespeicherter Prozeduren mit Entity Framwork 4.x, um Daten in POCO-Objekte zurückzugeben. Ich möchte nicht die Daten von einem Entitätsobjekt zu einem POCO-Objekt kopieren müssen. Ich möchte eine gespeicherte Prozedur ausführen und die Daten direkt in meine POCO-Klasse geladen haben.Gespeicherte Prozeduren von Entity Framework und POCO

Gibt es eine Möglichkeit, dies zu tun? Brauche ich eine Art von Mapping wie in Nhibernate? Wenn ja, könnte diese Zuordnung attributbasiert sein?

Edit: Mit Justin Hilfe unten, fand ich, dass die Art und Weise, dies zu tun ist:

SqlParameter p1 = new SqlParameter("@p1", "xxxx"); 
SqlParameter p2 = new SqlParameter("@p2", "yyyy"); 

SqlParameter[] parameters = new SqlParameter[2]; 
parameters[0] = p1; 
parameters[1] = p2; 

returned = base.ExecuteStoreQuery<YourClass>("exec your_stored_proc_name @p1, @p2", parameters); 

Antwort

4

Ja, Sie the generic version of ExecuteStoreQuery wenn Sie get to the ObjectContext verwenden können:

var listOfType= ((IObjectContextAdapter)context).ObjectContext 
        .ExecuteStoreQuery<Type>("SPROCNAME"); 

Here is the MSDN sample code (just change the TSQL to a sproc)

And, here is one that shows how to deal with parameters

Die ne wer Versionen von EF hat SqlQuery und DbContext.Database to get the ObjectContext easier:

var listOfType = context.Database.SqlQuery<Type>("SPROCNAME"); 
+1

@MystereMan aktualisiert, sorry :) –

+0

Dies scheint zumindest verlangen 'sqlquery ("EXEC SPROCNAME")'. Wenn Ihr Sproc Parameter hat, müssen Sie diese ebenfalls in Ihre SQL-Anweisung aufnehmen. – xr280xr

Verwandte Themen