Last active
November 2, 2015 16:11
-
-
Save lbargaoanu/0ae26a08d1a7821c2c91 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
static void Main(string[] args) | |
{ | |
Database.SetInitializer(new Initializer()); | |
Mapper.Initialize(cfg => { | |
cfg.CreateMap<TrainingCourse, TrainingCourseDto>().Include<TrainingCourse, ParentTrainingCourseDto>().ForMember(d=>d.Value, o=>o.MapFrom(d=>d.Content.Count())); | |
cfg.CreateMap<TrainingCourse, ParentTrainingCourseDto>(); | |
cfg.CreateMap<TrainingContent, TrainingContentDto>(); | |
}); | |
Mapper.AssertConfigurationIsValid(); | |
var context = new ClientContext(); | |
context.TrainingCourses.ProjectTo<ParentTrainingCourseDto>().FirstOrDefault(n => n.CourseName == "Course 1").Dump(); | |
} | |
class Initializer : DropCreateDatabaseAlways<ClientContext> | |
{ | |
protected override void Seed(ClientContext context) | |
{ | |
var course = new TrainingCourse{ CourseName = "Course 1" }; | |
context.TrainingCourses.Add(course); | |
var content = new TrainingContent{ ContentName = "Content 1", Course = course }; | |
context.TrainingContents.Add(content); | |
content = new TrainingContent{ ContentName = "Content 2", Course = course }; | |
context.TrainingContents.Add(content); | |
course.Content.Add(content); | |
} | |
} | |
class ClientContext : DbContext | |
{ | |
public ClientContext() : base(@"Server=(localdb)\v12.0;Integrated Security=true;Initial Catalog = ClientContext;") | |
{ | |
} | |
public DbSet<TrainingCourse> TrainingCourses { get; set; } | |
public DbSet<TrainingContent> TrainingContents { get; set; } | |
} | |
public class TrainingCourse | |
{ | |
public TrainingCourse() | |
{ | |
Content = new List<TrainingContent>(); | |
} | |
public TrainingCourse(TrainingCourse entity) | |
{ | |
Mapper.Map(entity, this); | |
} | |
[Key] | |
public int CourseId { get; set; } | |
public string CourseName { get; set; } | |
public virtual IList<TrainingContent> Content { get; set; } | |
} | |
public class TrainingContent | |
{ | |
public TrainingContent() | |
{ | |
} | |
[Key] | |
public int ContentId { get; set; } | |
public string ContentName { get; set; } | |
public virtual TrainingCourse Course { get; set; } | |
} | |
public class TrainingCourseDto | |
{ | |
public int CourseId { get; set; } | |
public string CourseName { get; set; } | |
public ICollection<TrainingContentDto> Content { get; set; } | |
public int Value { get; set; } | |
} | |
public class ParentTrainingCourseDto : TrainingCourseDto | |
{ | |
[IgnoreMap] | |
public new ICollection<TrainingContentDto> Content { get; set; } | |
} | |
public class TrainingContentDto | |
{ | |
public int ContentId { get; set; } | |
public string ContentName { get; set; } | |
public ParentTrainingCourseDto Course { get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment