2009-04-01 6 views
1

Supposons que vous ayez un objet métier avec beaucoup de propriétés. Quelle est la manière la plus simple et la plus efficace de définir les propriétés sans l'utilisation d'un outil ORM?Le moyen le plus rapide de définir des propriétés sur un objet?

Cela implique de définir les propriétés d'un objet lecteur de données, telles que

client.Name = (string)reader["Name"]; 

Qu'en est-il le cas où l'objet contient d'autres objets complexes?

Des suggestions?

Répondre

0

La sérialisation et/ou la réflexion est une option.

+0

La réflexion pose un problème lorsque le nom de la colonne ne correspond pas au nom de la propriété correspondant aux objets. – sduplooy

+0

Sauf si vous spécifiez un mappage entre les noms de colonnes et les noms de propriétés, vous ne pouvez pas obtenir ce que vous voulez. La spécification d'un tel mappage vous amène à créer un ORM personnalisé ou à utiliser un ORM existant. – sangupta

1

Eh bien, vous pourriez utiliser la réflexion pour générer le code d'assignation.

0

-vous demander trois choses différentes:

  • plus rapide
  • plus facile
  • mieux

ils ne sont pas les mêmes! Le plus rapide (à l'exécution) serait le code compilé; c'est-à-dire que vous écrivez C# régulier pour définir les propriétés correctement. Plus facile que cela utilise la réflexion - mais c'est lent. Vous aurez également besoin d'un mécanisme pour mapper les propriétés enfant ... (et aussi mapper les propriétés régulières s'il n'y a pas de correspondance 1: 1 entre le lecteur). C'est peut-être mieux résolu avec des attributs personnalisés sur les membres (propriétés/champs). En tant que compromis sur la vitesse (over reflexion), vous pouvez utiliser Delegate.CreateDelegate pour obtenir les paramètres de la propriété - mais c'est beaucoup de travail. Peut-être une autre option est HyperDescriptor; Cela permet un accès similaire à la réflexion, mais il est beaucoup plus rapide.

Mieux? Probablement utiliser du code existant - c'est-à-dire un outil ORM; moins pour écrire et déboguer.

+0

bien, je suppose que par le plus rapide, il voulait dire le plus rapide à écrire, pas le plus rapide à exécuter. – Brann

Questions connexes