Last active
February 9, 2016 18:15
-
-
Save plioi/17fd74b2549faa344f65 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class Entity | |
{ | |
public Guid Id { get; set; } | |
} | |
public class Customer : Entity | |
{ | |
public Customer() | |
{ | |
Orders = new List<Order>(); | |
Address = new Address(); | |
} | |
public string Name { get; set; } | |
public Address Address { get; set; } | |
public string Email { get; set; } | |
public virtual ICollection<Order> Orders { get; private set; } | |
public Order AddOrder(Order order) | |
{ | |
Orders.Add(order); | |
order.Customer = this; | |
return order; | |
} | |
} | |
public class Order : Entity | |
{ | |
public Order() | |
{ | |
OrderDetails = new List<OrderDetail>(); | |
BillingAddress = new Address(); | |
} | |
public virtual Customer Customer { get; set; } | |
public DateTime PurchaseTime { get; set; } | |
public Address BillingAddress { get; set; } | |
public virtual ICollection<OrderDetail> OrderDetails { get; } | |
public OrderDetail AddDetail(OrderDetail detail) | |
{ | |
OrderDetails.Add(detail); | |
detail.Order = this; | |
return detail; | |
} | |
} | |
public class OrderDetail : Entity | |
{ | |
public virtual Order Order { get; set; } | |
public string Description { get; set; } | |
public decimal UnitPrice { get; set; } | |
public int Quantity { get; set; } | |
} | |
public class Address | |
{ | |
public string Street { get; set; } | |
public string City { get; set; } | |
public string State { get; set; } | |
public string PostalCode { get; set; } | |
} | |
public class CustomerConfig : EntityTypeConfiguration<Customer> | |
{ | |
public CustomerConfig() | |
{ | |
Property(p => p.Address.Street).HasColumnName("Street"); | |
Property(p => p.Address.City).HasColumnName("City"); | |
Property(p => p.Address.State).HasColumnName("State"); | |
Property(p => p.Address.PostalCode).HasColumnName("PostalCode"); | |
} | |
} | |
public class OrderConfig : EntityTypeConfiguration<Order> | |
{ | |
public OrderConfig() | |
{ | |
Property(p => p.BillingAddress.Street).HasColumnName("BillingStreet"); | |
Property(p => p.BillingAddress.City).HasColumnName("BillingCity"); | |
Property(p => p.BillingAddress.State).HasColumnName("BillingState"); | |
Property(p => p.BillingAddress.PostalCode).HasColumnName("BillingPostalCode"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment