2012-03-29 20 views
3

POCOオブジェクトにデータを返すために、Entity Framwork 4.xでストアドプロシージャを使用する方法についてアドバイスが必要です。エンティティオブジェクトからPOCOオブジェクトにデータをコピーする必要はありません。私はストアドプロシージャを実行し、データを自分のPOCOクラスに直接ロードしたいと思っています。Entity FrameworkストアドプロシージャとPOCO

これを行う方法はありますか? Nhibernateで使用するようなマッピングが必要ですか?もしそうなら、このマッピングは属性に基づいていますか?

編集:

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

答えて

4

はい、あなたはあなたget to the ObjectContext一度the generic version of ExecuteStoreQueryを使用することができます:

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

ne WER EFのバージョンがSqlQueryDbContext.Database to get the ObjectContext easierがあります。申し訳ありませんが、更新

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

@MystereMan :) –

+0

これは、少なくとも 'のSQLQuery ( "EXEC SPROCNAMEを")'必要のようです。 sprocにパラメータがある場合は、SQL文にもパラメータを含める必要があります。 – xr280xr

関連する問題