2011-03-03 56 views
0

我用了一个WCF REST模板建立一个WCF服务库来创建PUT和GET调用。 PUT方法很好地将我的blob发送到数据库。
在GET,我希望能够直接从存储过程访问Web服务并显示结果数据集并绑定这一个gridview。该存储过程是一个简单的SELECT语句,返回三位来自表中的四列。我有以下内容:数据集绑定到GridView的WCF REST检索方法和LINQ内到SQL

[WebGet(UriTemplate = "/?name={name}", ResponseFormat = WebMessageFormat.Xml)] 
public List<Object> GetCollection(string name) 
{ 
     try 
     {  
       db.OpenDbConnection(); 
      // Call to SQL stored procedure 
       return db.GetCustFromName(name); 
     } 
     catch (Exception e) 
     { 
      Log.Error("Stored Proc execution failed. ", e); 
     } 
     finally 
     { 
      db.CloseDbConnection(); 
     } 
     return null; 
} 

我还将Linq添加到SQL类以包含我的数据库表和存储过程访问。除了其他必需的文件外,我还创建了Default.aspx文件。

protected void Page_Load(object sender, EventArgs e) 
{ 
     ServiceDataContext objectContext = new ServiceDataContext();    
      var source = objectContext.GetCustFromName("Tiger"); 
      Menu1.DataSource = source; 
      Menu1.DataBind(); 
} 

但是这给了我实体类型''不属于任何注册模型。

应该在哪里数据绑定来完成?什么应该是GetCollection()的返回类型?我坚持这一点。请提供有关如何执行此操作的帮助。

回答

0

首先,你为什么有对象的列表,而不是自定义类/类型或数据表? 然后,返回0,我宁愿设置为返回新的List<Object> sp将返回数据集或数据表。

首先创建一个类custommer:

class Custommer 
    { 
     private int gID; 
     private string gName; 

     public int ID 
     { 
      get 
      { 
      return gID; 
      } 
      set 
      { 
      gID=value; 
      } 
     } 

     public string Name 
     { 
      get 
      { 
      return gName; 
      } 
      set 
      { 
      gName=value; 
      } 
     } 
     ... 
    } 

然后是这样的:

[WebGet(UriTemplate = "/?name={name}", ResponseFormat = WebMessageFormat.Xml)] 
public List<Custommer> GetCollection(string name) 
{ 
     try 
     {  
      db.OpenDbConnection(); 
      // Call to SQL stored procedure   
       DataTable vDT = db.GetCustFromName(name); 

       //Create a new list of custommer 
       List<Custommer> vListOfCustommer = new List<Custommer>(); 

       //loop all row from the sp from database. 
       foreach (DataRow r in vDT) { 
        Custommer vCustommer = new Custommer(); 
        vCustommer.ID =r["ID"]; 
        vCustommer.Name= r["Name"]; 

        vListOfCustommer.add(vCustommer); 
       } 
       // return list of custommer 
       return vListOfCustommer; 
     } 
     catch (Exception e) 
     { 
      Log.Error("Stored Proc execution failed. ", e); 
     } 
     finally 
     { 
      db.CloseDbConnection(); 
     } 
     return new List<Custommer>(); 
} 
+0

感谢您的例子,欣赏它。我现在可以看到,当我做的WCF web服务一个GET返回的XML。但是我仍然对如何将这个XML数据绑定到一个gridview感到困惑。什么是最好的方法?..我应该创建另一个ASP.NET网站项目作为一个客户端来消费这个Web服务(所以我可以得到default.aspx),或者有一种方法可以在与WCF相同的项目中执行此操作Web服务项目?请帮忙.. – Jai 2011-03-04 15:23:07

相关问题