Skip to content

Instantly share code, notes, and snippets.

@lbargaoanu
Created November 23, 2017 19:05
Show Gist options
  • Save lbargaoanu/371486c04e48294dd72fef981d7ab4d7 to your computer and use it in GitHub Desktop.
Save lbargaoanu/371486c04e48294dd72fef981d7ab4d7 to your computer and use it in GitHub Desktop.
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