0

WCF REST テンプレートを使用して WCF サービス ライブラリを構築し、PUT および GET 呼び出しを作成しました。PUT メソッドは、ブロブをデータベースに送信するのに問題なく機能します。
GET では、Web サービスに直接アクセスし、ストアド プロシージャの結果をデータセットとして表示し、これをグリッドビューにバインドできるようにしたいと考えています。ストアド プロシージャは単純な select ステートメントであり、テーブルから 4 つの列のうち 3 つを返します。私は次のものを持っています:

[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 を返すように設定すると、データセットまたはデータテーブルが返されます。

最初に顧客用のクラスを作成します。

 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 に答える