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 的 #ouputtable 中读取 Select * 选择的值。可输出不包含固定数量的列。

我如何在 ASP mvc EDMX 中做到这一点。

4

1 回答 1

0

基本上我想做同样的事情,但最终无法弄清楚......所以我决定创建一个类,当我想像这样调用 sp 时我可以调用它。此链接提供了有关如何调用 sp 的结果并将其绑定到 Gridview 的基础知识: http ://www.aspnettutorials.com/tutorials/database/db-storedprocs-aspnet2-csharp.aspx

(请参阅“页面背后的代码流程如下。”部分。此外,如果您不使用 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 回答