public override void Save(Game entity) { var dbGame = DbGame.FromDomainModel(entity); _unitOfWork.Store(dbGame, tran => GameDatabase.Temp(tran).GamesTable); foreach (var dbPlayer in entity.Players.Select(p => DbPlayer.FromDomainModel(p, entity.Id))) { _unitOfWork.Store(dbPlayer, tran => GameDatabase.Temp(tran).PlayersTable); } }
private void SavePlayers(Game gameEntity) { var existingPlayerIds = GetBaseQuery() .Select("id").From(PlayerTableName).Where("game_id").Is(gameEntity.Id) .ListLongs(); foreach (var playerEntity in gameEntity.Players) { var obj = DbPlayer.FromDomainModel(playerEntity, gameEntity.Id); if (existingPlayerIds.Contains(playerEntity.Id)) { GetBaseQuery().Update(PlayerTableName).SetWithoutIdFrom(obj).Where("id").Is(playerEntity.Id).Execute(); } else { GetBaseQuery().InsertInto(PlayerTableName).InsertFrom(obj).Execute(); } } }