データベースのテーブルに基づいてモデルを作成し、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は、ストアドプロシージャのラッパーがそれはこのようになります生成されている必要があり、生成
はい、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
それでは、どのようにprocを呼び出していますか? – alltej
問題は修正されました。私は足場がストアドプロシージャのために働かないと思う。そこで、空のWeb Apiコントローラを作成し、次のコードを使用しました。 public IHttpActionResult Get(int Id) { dbEntities db = new dbdbEntities(); var record = db.uspStoreProcedure(Id); if(record == null) { return NotFound(); } 返信OK(レコード); } – khan