public User GetUserBalances(int userId) { string query = @"SELECT U.UserId,U.UserName,b.Amount,C.CurrencyId,C.Name Currency,C.Ratio FROM dbo.[User] U INNER JOIN dbo.[Balance] b ON b.UserId = U.UserId INNER JOIN dbo.[Currency] c ON c.CurrencyId = b.CurrencyId WHERE U.UserId = @UserId"; var userBalance = new List <DataModel.UserBalance>(); using (var connection = CreateConnection()) { userBalance = connection.Query <DataModel.UserBalance>(query, new { UserId = userId }).ToList(); } var user = GetUserInfo(userId); var balance = new Balance(); if (userBalance != null && userBalance.Count() > 0) { foreach (var item in userBalance) { balance.AddMoneyBalance( new Money(new Currency(item.CurrencyId, item.Currency, item.Ratio), item.Amount)); } } return(new User(user.UserId, user.Username, balance)); }