0

我使用 WCF REST 模板构建 WCF 服务库来创建 PUT 和 GET 调用。PUT 方法可以很好地将我的 blob 发送到数据库。
在 GET 上,我希望能够直接访问 Web 服务并将存储过程的结果显示为数据集,并将其绑定到网格视图。存储过程是一个简单的选择语句,从表中返回四列中的三列。我有以下内容:

[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() 的返回类型应该是什么?我被这个困住了。请提供有关如何执行此操作的帮助。

4

1 回答 1

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>();  
}
于 2011-03-03T22:49:34.163 回答