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系統下的大量測試)瓶頸。 –