Skip to content

Instantly share code, notes, and snippets.

@lbargaoanu
Created September 12, 2017 10:06
Show Gist options
  • Save lbargaoanu/e1d5f819c43a6c2519643aba588300ac to your computer and use it in GitHub Desktop.
Save lbargaoanu/e1d5f819c43a6c2519643aba588300ac to your computer and use it in GitHub Desktop.
static void Main(string[] args)
{
Mapper.Initialize(cfg =>
{
cfg.AllowNullDestinationValues = true;
cfg.AllowNullCollections = true;
cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
cfg.RecognizeDestinationPrefixes("DTO_");
cfg.CreateMap<Order, OrderDTO>().ForMember(d=>d.OrderLines,o=>o.ExplicitExpansion());
cfg.CreateMap<OrderLine, OrderLineDTO>();
});
using(var context = new TestContext())
{
context.Orders.ProjectTo<OrderDTO>(o=>o.OrderLines).Dump();
}
}
public class DatabaseInitializer : DropCreateDatabaseAlways<TestContext>
{
protected override void Seed(TestContext context)
{
context.Orders.AddRange(new[]{
new Order { OrderID = Guid.NewGuid(), OrderLines = { new OrderLine { OrderLineID = Guid.NewGuid() }, new OrderLine { OrderLineID = Guid.NewGuid() }}},
new Order { OrderID = Guid.NewGuid(), OrderLines = { new OrderLine { OrderLineID = Guid.NewGuid() }, new OrderLine { OrderLineID = Guid.NewGuid() }}},
new Order { OrderID = Guid.NewGuid(), OrderLines = { new OrderLine { OrderLineID = Guid.NewGuid() }, new OrderLine { OrderLineID = Guid.NewGuid() }}},
});
}
}
public class TestContext : DbContext
{
public TestContext()
{
//Database.Log = s=>Debug.WriteLine(s);
Database.SetInitializer<TestContext>(new DatabaseInitializer());
}
public DbSet<Order> Orders { get; set; }
}
public partial class Order
{
public Order()
{
this.OrderLines = new HashSet<OrderLine>();
}
public System.Guid OrderID { get; set; }
public string OrderPlacedBy { get; set; }
public Nullable<System.DateTime> PlacedTime { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
public partial class OrderLine
{
public System.Guid OrderLineID { get; set; }
public Nullable<System.Guid> OrderID { get; set; }
public Nullable<double> Amount { get; set; }
public virtual Order Order { get; set; }
}
public partial class OrderDTO
{
public OrderDTO()
{
this.OrderLines = new HashSet<OrderLineDTO>();
}
public System.Guid OrderID { get; set; }
public string DTO_OrderPlacedBy { get; set; }
public Nullable<System.DateTime> DTO_PlacedTime { get; set; }
public virtual ICollection<OrderLineDTO> OrderLines { get; set; }
}
public partial class OrderLineDTO
{
public System.Guid OrderLineID { get; set; }
public Nullable<System.Guid> OrderID { get; set; }
public Nullable<double> DTO_Amount { get; set; }
public virtual OrderDTO Order { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment