2010-11-21 11 views

Répondre

1

Vous pouvez le faire lorsque vous créez le mappeur. En gros, quelque chose comme ceci:

var results = db.ExecuteSprocAccessor("some_sproc", 
    MapBuilder<MyTargetType>.MapAllProperties() 
     .DoNotMap("SomethingThatDoesntMatch") 
     .Build(), 
    param1, param2, param3); 

qui va correspondre à tous les paramètres aux résultats par nom, mais pas la carte tout au SomethingThatDoesntMatch de la propriété. Quelque chose à savoir: la création du mappeur de jeu de résultats par MapBuilder est plutôt chère et n'est pas automatiquement mise en cache. Si vous faites cet appel en boucle, il sera probablement lent. Je vous recommande de créer le mappeur à l'avance et de le conserver, ou de créer l'accesseur séparément et de le maintenir sur l'accesseur.

+0

À l'heure actuelle, je n'utilise même pas de mappeur. Je construis juste mes objets avec soin afin qu'ils correspondent aux colonnes que mes sprocs reviennent. C'est extrêmement propre et fonctionne dans la plupart des cas. J'espérais que je pourrais simplement décorer les propriétés que je ne veux pas mappées avec un attribut. Tant pis. À l'heure actuelle, je parcours une boucle dans ma couche logique et je copie sur les objets-paramètre par paramètre-que je reviens de l'accesseur sproc dans une liste d'objets qui contiennent les quelques autres paramètres dont j'ai besoin. Si j'ai des problèmes de performances, je vais tester les deux méthodes et utiliser le plus rapide. Merci!!! – birdus

+2

Eh bien, vous utilisez un mappeur, il est simplement créé implicitement pour vous. Oui, dans ce cas, vous devrez en créer un explicitement. Nous avons délibérément gardé les choses simples. Nous voulions simplement faciliter la consommation des résultats de la base de données, et non créer accidentellement un outil ORM. –

+0

Ah. Vous êtes dans l'équipe EntLib. Cool. Oui, obtenir une liste d'objets de mes sprocs est super lisse. J'aime vraiment ça. Merci de votre aide. – birdus