je l'entité de domaine suivant:Dto et entités de domaine. Ai-je créé mon dto correctement?
public class CartItem
{
public virtual Guid Id { get; set; }
public virtual Guid SessionId { get; set; }
public virtual int Quantity { get; set; }
public virtual Product Product { get; set; }
}
Je la DTO suivante:
public class CartItemDTO
{
public CartItemDTO(CartItem cartItem)
{
Id = cartItem.Id;
Quantity = cartItem.Quantity;
Name = cartItem.Product.Name;
Price = cartItem.Product.Price;
}
public Guid Id { get; private set; }
public int Quantity { get; private set; }
public string Name { get; private set; }
public decimal Price { get; private set; }
}
Le flux de travail actuel est assez simple: mon dépôt retourne un IEnumerable de type CartItem. Mon service le transforme en dto (CartItemDTO). Mon contrôleur passe ensuite à la vue. Jusqu'ici tout va bien.
Maintenant, je veux mettre en œuvre un total pour chacun des postes. J'ai ajouté la propriété suivante à CartItemDTO.
public decimal Total { get; private set; }
J'ai ensuite ajouté le code suivant au constructeur CartItemDTO.
Total = cartItem.Quantity * cartItem.Product.Price;
Ma première question est de savoir si ce est une approche des meilleures pratiques? Si non, pourquoi? Dois-je avoir ajouté la propriété Total ailleurs? Si oui, pourquoi?
Je voulais aussi mettre en œuvre un total pour l'ensemble du panier pour que je crée une nouvelle classe (ci-dessous) et modifié mon service à rendre.
public class CartItemResult
{
public CartItemResult(IEnumerable<CartItemDTO> result)
{
CartItems = new List<CartItemDTO>(result);
Total = result.Sum(total => total.Total);
}
public IList<CartItemDTO> CartItems { get; private set; }
public decimal Total { get; private set; }
}
je pourrais maintenant passer soit la nouvelle classe à la vue ou créer un ViewModel séparé et transmettre le contenu de la nouvelle classe au ViewModel et passer que le point de vue.
Ma deuxième question est, encore une fois si cette approche est une approche des meilleures pratiques? Sinon, pourquoi et qu'aurais-je dû faire différemment?