2009-01-21 6 views
0

J'utilise un service Web .NET en tant qu'interface avec une base de données. Quel est le meilleur moyen de renvoyer des lignes à partir de ce service Web?Retour de lignes à partir d'un service Web .NET

Je me souviens vaguement que .NET 2.0 avait des problèmes avec le retour des objets DataTable. Est-ce que ces problèmes existent toujours?

Mise à jour: Certains de theissues dans .NET 1.1. Aussi, je crois que dans 2.0 le DataTable est désérialisé comme un objet DataSet du côté du client. Ai-je raison?

Répondre

2

Vous essayez effectivement de faire le travail de ADO.net? Vous feriez bien mieux de retourner POCO (plaine vieux objets C#) que vous pouvez sérialiser efficacement pour envoyer du savon, puis les retirer de l'autre côté. Peut-être pourriez-vous nous donner plus d'information dans votre question sur ce que vous essayez de faire.

Les DataRows et DataTables n'ont pas été modifiés dans .net 3.0. Si vous voulez utiliser le framework d'entité pour faire passer des choses, vous rencontrerez des problèmes différents. Si ce sont des lignes, jetez un coup d'œil à Linq et sérialisez en passant les entités de ligne en tant que collection. Il existe des moyens de reconstruire les entités dans un contexte de données côté client afin que les références soient reliées, etc.

+0

Mon service Web extrait les enregistrements d'une base de données. Je veux simplement retourner les lignes au client. Le retour d'un DataSet/DataTable devrait fonctionner mais j'ai entendu de mauvaises choses à leur sujet dans .NET 2.0. Des problèmes similaires existent-ils dans .NET 3.0? –

+0

En quoi consistent ces "mauvaises choses"? Performance? –

+0

Non. Voici quelques liens que j'ai trouvés: http://support.microsoft.com/kb/306134 et http://bytes.com/groups/net-web-services/376326-possible-return-datatable-webservice- method Elles s'appliquent à .NET 2.0. Comment sont en 3.0? –

1

Je suis d'accord avec Spence. Avec un service Web, vous créez un contrat avec le client. Ce contrat ne doit pas être rompu simplement parce que vous voulez changer la forme de votre base de données. Je voudrais créer une classe qui correspond à la structure de la table et renvoyer une "liste des" objets de cette structure. Ensuite, lorsque le modèle de données change, vous pouvez gérer cette interface et créer une seconde méthode de service correspondant à la nouvelle structure.

Questions connexes