2012-03-29 2 views
3

J'ai besoin de conseils sur l'utilisation de procédures stockées avec Entity Framwork 4.x pour renvoyer des données dans des objets POCO. Je ne veux pas avoir à copier les données d'un objet entité vers un objet POCO. Je veux exécuter un proc stocké et charger les données directement dans ma classe POCO.Entity Framework Procédures stockées et POCO

Existe-t-il un moyen de le faire? Ai-je besoin d'une sorte de cartographie comme celle que vous utiliseriez à Nhibernate? Si oui, cette cartographie pourrait-elle être basée sur un attribut?

Edit: En utilisant l'aide de Justin ci-dessous, je trouve que la façon de le faire est:

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); 

Répondre

4

Oui, vous pouvez utiliser the generic version of ExecuteStoreQuery une fois que vous get to the ObjectContext:

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

Le nouveau versions wer de EF a SqlQuery et DbContext.Database to get the ObjectContext easier:

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

@MystereMan Mise à jour, désolé :) –

+0

Cela semble au moins exiger 'sqlquery ("exec SPROCNAME")'. Si votre sproc a des paramètres, vous devez également les inclure dans votre instruction SQL. – xr280xr

Questions connexes