0

edmx でストアド プロシージャを使用しています。以下のSPを使用しています。

Create getreportDAta(@Reportname varchar(50),@startDate datetime,@enddate datetime)
begin
    IF OBJECT_ID('tempdb..#ouputtable ') IS NOT NULL DROP TABLE #ouputtable ;
  create #ouputtable (usdate datetime)
  if(@reportname="abc")
   begin
   alter #ouputtable add(Some columns) 
     end
      else begin 
         alter #ouputtable add(Some columns) 
      End 
      so oonn...
     Select * from #ouputtable ;

今私は edmx の #outputtable から Select * によって選択された値を読みたいです。出力テーブルには固定数の列が含まれていません。

ASP mvc EDMX でこれを行うにはどうすればよいですか。

4

1 に答える 1

0

基本的に私は同じことをしたかったのですが、結局それを理解できませんでした..なので、このようにspを呼び出したいときに代わりに呼び出せるクラスを作成することにしました。このリンクは、sp の結果を呼び出して Gridview にバインドする方法の基本を示しています

(「コード ビハインド ページのフローは次のとおりです。」セクションを参照してください。また、C# に慣れていない場合は、そのページに VB.NET バージョンへのリンクがあります)。

コード ビハインド ボタン クリック イベントの修正版を次に示します。

try {
System.Configuration.Configuration rootWebConfig =  
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebsite");    //create connection string object
System.Configuration.ConnectionStringSettings connString;
if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0)    {
    connString = rootWebConfig.ConnectionStrings.ConnectionStrings["MyConnectionString"];
    if (connString != null) {
        System.Data.SqlClient.SqlCommand cmd = 
            new System.Data.SqlClient.SqlCommand("MyStoredProcedure", new System.Data.SqlClient.SqlConnection(connString.ConnectionString));
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Connection.Open();
        GridViewResults.DataSource = cmd.ExecuteReader();
        GridViewResults.DataBind();
        cmd.Connection.Close();
        cmd.Connection.Dispose();
    }
    else {
        throw new Exception("No MyConnectionString Connection String found in web.config.");
    }
}
else {
    throw new Exception("No Connection Strings found in web.config.");
}
}
catch (Exception) {
    throw;
}

edmx ファイルがあるデータレイヤー プロジェクトの独自のクラスにそれを組み込み、それを使用してそのようなストアド プロシージャを呼び出すだけです。:)。

于 2013-02-12T14:59:17.253 に答える