Я создаю простое приложение корзины aspnetmvc и определил классы, подобные следующим:
public class Cart
{
public Guid Id { get; set; }
public string Comment { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime UpdatedOn { get; set; }
public DateTime? DeletedOn { get; set; }
public List<CartItem> CartItems { get; set; }
}
public class CartItem
{
public Guid Id { get; set; }
public Guid CartId { get; set; }
public string Sku { get; set; }
public double ItemAmount { get; set; }
public double Amount { get; set; }
public int Quantity { get; set; }
}
С очень простым хранилищем, которое выглядит примерно так:
public interface ICartRepository
{
Cart CreateCart();
Cart GetCart(Guid Id);
Cart UpdateCart(Cart cart);
void DeleteCart(Cart cart);
}
После создания классов у меня возникает ощущение, что мне лучше подойти для выделения свойства List из класса Cart, а затем рекомбинировать их в моей модели представления.
public class vmCart
{
public Cart cart { get; set; }
public List<CartItem> CartItems { get; set; }
public string CreatedOn
{
get
{
return cart.CreatedOn.ToString();
}
}
public string CartTotal
{
get
{
var total = (double)0;
foreach (var lineItem in CartItems)
{
total += lineItem.Amount;
}
return total.ToString("c");
}
}
}
Это означало бы, что мне нужно было бы добавить дополнительные методы в мою модель для CRUD CartItems, но все равно позволило бы мне представить объект представлению (через модель представления) как объединенную сущность.
Может быть, нет четких преимуществ для любого формата, но я хотел бы получить любые отзывы о дизайне.
С уважением,
Hal