Exemple #1
0
        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();
                }
            }
        }