2012-02-16 18 views
1

WebサービスがDataTableを返す場所はどこですか?WebサービスでPetaPocoを使用する

すべてのサンプルはdb/Connectionオブジェクトを参照しています。

どのポインタも高く評価されています。

ありがとうございます!

+0

@Garethは、あなたが完全なを取得するためにPOCOのを使用する必要が指摘したようにペタポコの使用。基本的に各POCOは、テーブルの列とまったく同じように構造化されたクラスです。いくつかのSqlを実行し、PetaPocoは結果をPOCOの列挙可能なセットにマップします。 Webサービスコールでこれを返すことができ、WCFは残りの部分を処理します。 – Jeremy

+0

Webサービス実装では、petapocoを使用してsybaseデータをpocosに変換し、ポコスをWebサービスのコンシューマに返します。 – cdaq

答えて

3

DataTableを返す必要はありません。それはADO.NETの考え方です。代わりに、ポコス(あなたのデータを表すクラス)のリストを返すことができます。ここでは、メインPetapoco help page at Topten Softwareからの例です:

// Create a PetaPoco database object 
var db=new PetaPoco.Database("connectionStringName"); 

// Show all articles  
foreach (var a in db.Query<article>("SELECT * FROM articles")) 
{ 
    Console.WriteLine("{0} - {1}", a.article_id, a.title); 
} 

この例では、「記事は、」このようなプレーンなC#のオブジェクトです:

public class article 
{ 
    public long article_id { get; set; } 
    public string title { get; set; } 
    public DateTime date_created { get; set; } 
    public bool draft { get; set; } 
    public string content { get; set; } 
} 
+0

Webサービスからこれを返すために。それはPetapocoとは関係ありません。それはあなたにリストを与えました

あなたはそれをXMLにシリアル化し、好きなときにそれを返すか、JavascriptSerializerを使ってjsonを返すことができます。 –

+0

ここにきて正確に言いました - すばらしい答えガレス。 IEnumerable

および/またはリスト
を返すだけで十分です。 WCFはserializeを返し、エンドポイント/コントラクトが設定されている形式でこれを返します。 – Jeremy

+0

これは、Webサービスレベルでpocoを定義し、それらをシリアライズしたり、odataサービスの設定を設定したり、今後のasp.netデータAPIを使用したりする必要がありますが、Webサービスを軽量(変更なし)にして、それはクライアントにpoco'fiedされています!理想的ではありませんが、dbはsybaseです(最後にチェックして、ポコはそれで動作しませんでした)、クエリの種類が多すぎます。データセットはかなり大きく、ダース+テーブルの800+カラムでかなりわかります共通のスキーマを持ち、アプローチに必要なものだけを取る – Kumar

関連する問題