Created
November 23, 2017 19:05
-
-
Save lbargaoanu/371486c04e48294dd72fef981d7ab4d7 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() | |
{ | |
Mapper.Initialize(cfg=> | |
{ | |
cfg.CreateMap<Player, PlayerDto>() | |
.ForMember(d=>d.TeamIds, o=>o.MapFrom(s=>s.Teams.Select(t=>t.Id).ToList())) | |
.ForMember(d=>d.FullName, o=>o.MapFrom(s=>s.Name + " " +s.LastName)); | |
}); | |
Mapper.AssertConfigurationIsValid(); | |
using(var connection = new SQLiteConnection("data source=test")) | |
{ | |
var context = new MyDbContext(connection); | |
LINQPad.Util.ClearResults(); | |
var players = context.Players.ProjectTo<PlayerDto>().Where(p=>p.FullName.Contains("P")).Dump(); | |
//context.Players.Select(p=>new PlayerDto { TeamIds = p.Teams.Select(t=>t.Id).ToList() }).Dump(); | |
} | |
} | |
class MyDbContext : DbContext | |
{ | |
public MyDbContext(SQLiteConnection connection) : base(connection, false) | |
{ | |
Database.Log = s=>Console.WriteLine(s); | |
} | |
protected override void OnModelCreating(DbModelBuilder modelBuilder) | |
{ | |
var sqliteConnectionInitializer = new MyDbContextInitializer(modelBuilder); | |
Database.SetInitializer(sqliteConnectionInitializer); | |
} | |
public DbSet<Player> Players { get; set; } | |
public DbSet<Team> Teams { get; set; } | |
} | |
class MyDbContextInitializer : SqliteDropCreateDatabaseAlways<MyDbContext> | |
{ | |
public MyDbContextInitializer(DbModelBuilder modelBuilder) : base(modelBuilder) | |
{ | |
} | |
protected override void Seed(MyDbContext context) | |
{ | |
context.Players.Add(new Player { Name = "P1", Teams = new List<Team> { new Team { Name = "T1" }}}); | |
context.Players.Add(new Player { Name = "P2", Teams = new List<Team> { new Team { Name = "T1" }}}); | |
context.Players.Add(new Player { Name = "P3", Teams = new List<Team> { new Team { Name = "T2" }}}); | |
context.Players.Add(new Player { Name = "P4", Teams = new List<Team> { new Team { Name = "T2" }}}); | |
context.Players.Add(new Player { Name = "P5", Teams = new List<Team> { new Team { Name = "T3" }}}); | |
} | |
} | |
public class Player | |
{ | |
public long Id { get; set; } | |
public List<Team> Teams { get; set; } | |
public string Name { get; set; } | |
public string LastName { get; set; } | |
} | |
public class Team | |
{ | |
public long Id { get; set; } | |
public string Name { get; set; } | |
} | |
public class PlayerDto | |
{ | |
public long Id { get; set; } | |
public string FullName { get; set; } | |
public List<long> TeamIds { get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment