J'ai une méthode ce qui obtient une liste des utilisateurs filtrant par un champ spécifique. Cette méthode est utile pour beaucoup de fonctionnalités de mon application, mais dans d'autres cas est trop lente.
La table de l'utilisateur a un champ qui contient des données de photos, donc c'est un champ lourd. Maintenant, je développe une fonctionnalité ce qui n'a pas besoin de ce champ et je cherche le moyen de ne pas le retourner, ni de le retourner comme vide pour rationaliser le processus P>
Je travaille avec C #, obtenant Une liste filtrée des utilisateurs du référentiel UnitOfwork avec une fonction "getByFilter" " p>
J'essaie de effacer la colonne Plus tard, mais le processus continue d'être trop lourd. Comment je peux rationaliser ce processus? P> p>
3 Réponses :
Je changerais votre fonction get_internal () comme si:
(n'a pas testé cela, j'ai écrit le code purement de la mémoire, mais il devrait probablement fonctionner avec quelques modifications mineures) Ceci retournera un nouvel objet utilisateur pour chaque rangée, mais remplissez les propriétés que vous sélectionnez explicitement. Donc, si vous ne sélectionnez pas votre propriété image, cela ne sera pas sélectionné. P> Si vous cochez le SQL généré, vous devez également voir que cette colonne n'est jamais sélectionnée. P> P>
Par convention, toutes les propriétés publiques avec un getter et un setter seront incluses dans le modèle.
Pour exclure les propriétés, vous devrez utiliser des annotations de données ou l'API fluide P>
annotations de données: p> API fluide: p>
@Excali 2 a fait ma réponse vous aida à sortir de votre problème à la fin?
Finnaly Après avoir essayé certaines choses, j'ai décidé d'appliquer la solution proposée par Steven, mais avec quelques modifications mineures. Il a donné des problèmes dans "get_internal", alors j'ai décidé (bien que ce ne soit pas la meilleure option) le faire dans le contrôleur.
Le code semble (plus ou moins) comme ceci: p>
/// <summary> /// Get by Filter /// </summary> /// <param name="filter">user filters</param> /// <returns></returns> [Route("functionRoute")] [HttpPost] public IHttpActionResult GetUsersByFilter([FromBody] UserFilter filter) { try { UserService service= new UserService (); List<User> list = service.GetByFilter(filter).Select(x => new User() { Id = x.Id, Name = x.Name, //every property except your image property }).ToList(); List<UserCE> listCE = Mapper.Map<List<UserCE>>(list); return Ok(listCE); } catch (Exception ex) { TraceManager.LogError(ex); return InternalServerError(ex); } }
Dupliqué possible de Ce alors question.