public static void Main()
public int Id { get; set; }
string Name { get; set; }
string Email { get; set; }
string Password { get; set; }
public abstract class User: Entity, IUser
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public Roles Role { get; set; }
public override string ToString() {
return String.Format("{0} ({1})", Name, Email);
public class Admin: User {
public class Customer : User {
public Cart[] Carts { get; set; }
public class Product : Entity {
public string Name { get; set; }
public int Amount { get; set; }
public class Cart : Entity {
public Customer User { get; set; }
public Item[] Items { get; set; }
public int Amount { get; set; }
public DateTime? PaidAt { get; set; }
public class Item : Entity {
public Product Product { get; set; }
public int Qty { get; set; }