Отработать значение и pu sh в модель при вызове - PullRequest
0 голосов
/ 11 марта 2020

Итак, этот код должен определить, сколько «лайков» имеет пользователь, а затем вернуть это значение в качестве значения «UserPhoto.Likes». В настоящее время я получаю всю модель «UserPhoto» и прорабатываю «Likes», но не собираю их вместе, как я хочу.

    [HttpGet("{userId}/photo/{photoId}")]
    public async Task<IQueryable> GetUserPhoto(int userId, int photoId)
    {
        var photos = _context.UserPhotos.Where(x => x.UserId == userId).Include(p => p.Likers);

        var photo = photos.Where(x => x.Id == photoId);

        var likes = _repo.CountUserLikes(userId, photoId);
        // this line gets the total amount of likes for that photo

        var whole = photo.Include(x => x.Likes as likes);
        // this line is where I tried to send 'Likes' as 'likes'

        return whole;
    }

Это то, что должно быть возвращено из этого запроса, просто с правильным количеством лайков (как вы можете видеть, там есть 1 лайк, поэтому лайки должны сказать 1, но он говорит 0. Также нет ошибки в строке

var likes = _repo.CountUserLikes(userId, photoId);

, так как это возвращает правильное количество лайков, я проверил

[
    {
        "id": 1,
        "photoUrl": "https://scontent-lhr8-1.cdninstagram.com/v/t51.2885-19/s150x150/39810479_537470876724057_5547938285650706432_n.jpg?_nc_ht=scontent-lhr8-1.cdninstagram.com&_nc_ohc=MBSkwH6PVzgAX9iSKsc&oh=39e4f480573fc78cf0afefb8820cdd19&oe=5EB8228C",
        "description": "Non deserunt labore sunt ex laboris et adipisicing ullamco officia minim.",
        "dateAdded": "0001-01-01T00:00:00",
        "isMain": true,
        "publicId": null,
        "isImage": true,
        "mainImage": "https://scontent-lhr8-1.cdninstagram.com/v/t51.2885-19/s150x150/39810479_537470876724057_5547938285650706432_n.jpg?_nc_ht=scontent-lhr8-1.cdninstagram.com&_nc_ohc=MBSkwH6PVzgAX9iSKsc&oh=39e4f480573fc78cf0afefb8820cdd19&oe=5EB8228C",
        "userId": 1,
        "likers": [
            {
                "id": 1,
                "imageId": 1,
                "likerId": 1
            }
        ],
        "likes": 0
    }
]

Кроме того, в модели "лайки" - это целочисленное значение:

 public int Likes { get; set; }

1 Ответ

2 голосов
/ 12 марта 2020

Как сказал Райан Томас, вы можете просто объявить свойство Likes как свойство только для чтения, которое возвращает количество лайков при каждом обращении к нему:

public int Likes => likers.Count()

Это не Статистическое значение c, это свойство каждого объекта.

Я думаю, что метод .Include () вам не совсем понятен. Я бы посоветовал поискать немного больше здесь . Однако в действительности он используется для добавления дополнительных данных к возвращаемому результату из таблиц, которые вы не указали в своем запросе, но связаны с вашей таблицей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...