0
我是一名实体框架用户,将Dapper视为一种替代方案。在实体框架中,我能够做到这一点,它将填充我的Team对象和每个玩家的玩家集合属性以及每个玩家内的团队属性。小巧玲珑只能返回平面类吗?
var players = context.Teams
.Include(x => x.Players)
.AsNoTracking()
.Where(x => x.SportId == sportId).ToList();
我发现这是Dapper,但它似乎只是返回一个没有团队数据的平面选手对象。有没有办法让Dapper做EF做的事?如果是这样,怎么做?
var players = conn.Query<PlayerDTO, TeamDTO, PlayerDTO>("SELECT p.Id,
p.FirstName, p.LastName, p.DateOfBirth, p.TeamId, t.Id as TeamId, t.Name,
t.SportId FROM Team t "+ "INNER JOIN Player p ON t.Id = p.TeamId WHERE
t.SportId = @ID", (player, team) => { return player; }, splitOn: "TeamId",
param: new { ID = sportId });
然而,如果你想要聚集语义,也就是说如果你的领域模型是分层的,那么这个世界的平面视图是不够的。 EF查询的效率是无关紧要的,除非它是在特定系统中证明的(通过EF系统下的大量测试)瓶颈。 –