2010-11-14 5 views
0

par exemple, classe question aurait QuestionID, le titre, le contenu, le temps affiché, affiche, étiquettes, etc. Voici comment les données fetching ressemble:MVC - Classes de données - Seul un sous-ensemble de propriétés est nécessaire?

public bool LoadFromDataRow(DataRow row) 
     { 
      questionId = (long)row["questionId"]; 
      content = (string)row["content"]; 
      poster = (string)row["poster"]; 
      datePosted = (DateTime)row["datePosted "]; 
      title = (string)row["title"]; 
      return true; 
     } 

Cependant, il pourrait y avoir un temps où je suis seulement en sélectionnant un sous-ensemble de ces propriétés comme questionid et title. Ai-je besoin d'écrire une autre classe pour gérer cela? Ou dois-je vérifier pour chaque colonne unique avant que je récupérer la valeur avec quelque chose comme ceci:

if(row.hascolumns(...)) // seems like overkill? 

Répondre

1

à mon humble avis, il est bien d'avoir votre méthode référentiel retourner un modèle avec toutes les propriétés cartographiées mais utiliser un modèle de vue quand vient le temps d'afficher/modifier ce modèle sur une vue. Ensuite, effectuez un mappage entre votre modèle et votre modèle de vue (qui serait un sous-ensemble du modèle) et, à votre avis, travaillez avec le modèle de vue. Il y a une exception à cela: les BLOB. Si vous stockez des données binaires telles que des images dans la base de données, je vous recommande d'avoir deux méthodes distinctes: une qui récupère les images et une qui ne le fait pas.

+0

mais s'il y a 15 champs, et j'ai besoin de seulement 2, et il y a beaucoup de tels enregistrements sur la page, n'est-ce pas comme si j'envoyais des données inutiles de mon SQL Server ...? Ou vous pensez que le temps d'aller chercher 13 champs supplémentaires par enregistrement est négligeable? – TPR

+1

Oui, en effet, vous allez effectuer une requête SQL qui va chercher 15 champs mais afficher seulement 5. Je ne m'inquiéterais pas beaucoup de cela et de l'IMO ce sera un impact négligeable sur les performances par rapport à l'exécution de la requête elle-même. Bien sûr, vous devriez mesurer la performance pour vous assurer que cela ne devienne pas un goulot d'étranglement pour l'application. –

Questions connexes