2016-04-24 4 views
0

データベースのテーブルに基づいてモデルを作成し、Entity Framework(6)を使用したアクションでWeb API 2コントローラをスカッフォールドできます。ただし、モデルがストアドプロシージャに基づいて作成されている場合は、Web API 2コントローラを作成できません。Web API 2はストアドプロシージャベースのモデルからコントローラをスカッフォールドできません

選択したコードジェネレータを実行中にエラーが発生しました。 ....のメタデータを取得できません。

私は同じ結果を持つ複数のストアドプロシージャを試しました。私は、アクションを使ってWeb API 2コントローラのODATAバージョンを作成しようとしましたが、同じ結果を受け取りました。

ストアドプロシージャはレコードセットを返します。

この問題を解決する方法、またはこの問題を回避する方法はありますか?

public virtual ObjectResult<uspStoredProcName_Result> uspStoredProcName(string abc) 
{ 
    ... 
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<uspStoredProcName_Result_Result>("uspStoredProcName_Result", abcParameter); 
} 

次に、あなたのコードでは、あなたはこのようにそれを呼び出します:

var abcResults = dbContext.uspStoredProcName(abc).ToList(); 

あなたが選択していることを確認しdbContextは、ストアドプロシージャのラッパーがそれはこのようになります生成されている必要があり、生成

答えて

0

モデルを生成するときのストアドプロシージャ(DbContext)

+0

はい、dbcontextには、記述したラッパーがあります。 public virtual ObjectResult uspGetEmployeeManagers(Nullable businessEntityID) { var businessEntityIDParameter = businessEntityID.HasValue? 新しいObjectParameter( "BusinessEntityID"、businessEntityID): 新しいObjectParameter( "BusinessEntityID"、typeof(int)); return((IObjectContextAdapter)this).ObjectContext.ExecuteFunction ( "uspGetEmployeeManagers"、businessEntityIDParameter); } – khan

+0

それでは、どのようにprocを呼び出していますか? – alltej

+0

問題は修正されました。私は足場がストアドプロシージャのために働かないと思う。そこで、空のWeb Apiコントローラを作成し、次のコードを使用しました。 public IHttpActionResult Get(int Id) { dbEntities db = new dbdbEntities(); var record = db.uspStoreProcedure(Id); if(record == null) { return NotFound(); } 返信OK(レコード); } – khan