2009-09-08 7 views
4

Est-ce une bonne pratique et y at-il quelque chose dont j'ai besoin? Je liais le répéteur à un asp: SqlDataSource. La principale raison pour cela est de gagner plus de contrôle sur SqlCommand (par exemple, CommandTimeout).Liez SqlDataReader au répéteur. Bonnes pratiques?

Exemple:

try 
    { 
     SqlDataReader MyReader = GetSomeResultsFromSqlCommand(); 
     MyRepeater.DataSource = MyReader; 
     MyRepeater.DataBind(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     MyReader.Close(); 
    } 
+0

Vous n'avez pas besoin du bloc catch et re-throw. Le finalement s'en occupera. Ou l'utilisation par Andrew Hare – Keltex

Répondre

15

Ceci est une chose parfaitement bien à faire - laissez-moi vous offre une syntaxe plus succincte qui fournira les mêmes résultats et offre les mêmes capacités de nettoyage de sécurité intégrée:

using (SqlDataReader MyReader = GetSomeResultsFromSqlCommand()) 
{ 
    MyRepeater.DataSource = MyReader; 
    MyRepeater.DataBind(); 
} 
2

Votre code semble être OK comme écrit et ne semble pas nécessairement violer les meilleures pratiques. Vous pouvez cependant Rédactrice un peu le code et utiliser le « en utilisant » déclaration au lieu de l'essai, catch, finally ...


Personnellement, j'essaie d'éviter d'utiliser SqlDataSource comme étroitement couples votre code frontal à votre Les données. Pour garder la séparation des préoccupations, je créerais une fonction dans une classe qui pourrait obtenir ces données pour vous et peut être personnalisée autant que nécessaire.

1

Rien vraiment mal à cela si vous enveloppez-le dans un bloc en utilisant comme Andrew suggère. L'autre chose que je pourrais faire est d'utiliser un ObjectDataSource à la place et de renvoyer un IEnumerable d'un objet métier fortement typé. Cela vous poussera à utiliser de bonnes affaires et du code hiérarchisé, à faciliter l'utilisation d'un ORM si vous le souhaitez et à vous donner le contrôle supplémentaire sur les commandes sql que vous désirez.

+0

+1 Bonne suggestion. –

+0

N'avez pas encore fait cela. Souhaitez-vous fournir un lien vers un bon exemple pratique si disponible? Merci. – Eddie

Questions connexes