0

J'ai une très grande entité avec quelques centaines de propriétés. J'ai un référentiel que j'utilise pour sélectionner cette toutes les entités et renvoie un IEnumerable de l'entité.Grande entité et mappage ViewModel

Dans mon contrôleur, j'utilise ensuite automapper pour mapper vers un index ViewModel de cette entité et il utilise seulement deux des propriétés de l'entité dans le ViewModel. Il faut beaucoup de temps pour revenir par rapport à une sélection des deux propriétés. Il semblerait qu'il sélectionne toutes les propriétés de l'entité et ensuite en utilisant deux d'entre elles.

Quelle serait la méthode recommandée pour ce faire. Ai-je besoin de créer le modèle de vue dans le référentiel?

Graeme

Répondre

2

Vous pouvez transmettre un DTO ou un modèle différent.

public class LargeEntityDto 
{ 
    public string Foo { get; set; } 
    public string Bar { get; set; } 
} 

Ensuite, dans votre dépôt

public IEnumerable<LargeEntityDto> GetLargeEntityDtos() 
{ 
    return context.LargeEntities 
     .Select(e => new LargeEntityDto { Foo = e.Foo, Bar = e.Bar}); 
} 
+0

Ouais c'était ma façon de penser. Je ne voulais pas vraiment avoir à ajouter d'autres DTO, mais j'espérais simplement que EF puisse renvoyer la même entité mais avec peut-être d'autres champs non sélectionnés dans le DB, etc. – GraemeMiller

+0

+1: Ceci est probablement le manière la plus facile. Vous pouvez également créer une entité dans votre contexte EF qui ne fait que correspondre aux quelques propriétés dont vous avez vraiment besoin. – StriplingWarrior

Questions connexes