检查.net核心数据库中是否存在某些内容,然后以布尔值返回

时间:2020-05-12 16:30:14

标签: c# .net-core

因此,我试图弄清楚如何检查数据库中是否存在某些内容。在这种情况下,正在发生的事情是确定用户是否“喜欢”图像,并将其作为真值或假值返回。我这样做的方法是检查此“赞”是否存在一个或多个版本,如果存在,则返回true,否则返回false。这是代码。

我目前正在做什么:

    public bool checkCurrentUserLiked(int currentUserId, int imageId)
    {
        var hasData = _context.PhotoLikes.Where(x => x.LikerId == currentUserId && x.ImageId == imageId);

        var dataToReturn = false;

        if (hasData.Count() >= 1)
        {
            // entity exists in database
            dataToReturn = true;
        }
        else
        {
            dataToReturn = false;
            // nope
        }
        return dataToReturn;
    }

我尝试过的另一种方式

    public bool checkCurrentUserLiked(int currentUserId, int imageId)
    {
        bool hasData = _context.PhotoLikes.Any(x => x.LikerId == currentUserId && x.ImageId == imageId);

        var dataToReturn = false;

        if (hasData)
        {
            // entity exists in database
            dataToReturn = true;
        }
        else
        {
            dataToReturn = false;
            // nope
        }
        return dataToReturn;
    }

当我到达:

如果(hasData.Count()== 1),我得到的错误是: 在先前的操作完成之前,第二操作在此上下文上开始。不保证任何实例成员都是线程安全的。

它不运行

[编辑]

我在这里遇到的错误是:无法将类型'System.Linq.IQueryable'隐式转换为'bool'

    public bool checkCurrentUserLiked(int currentUserId, int imageId)
    {
          _context.PhotoLikes.Any(x => x.LikerId == currentUserId && x.ImageId == imageId);

    }

2 个答案:

答案 0 :(得分:1)

尝试一下:

    public bool checkCurrentUserLiked(int currentUserId, int imageId)
        => _context.PhotoLikes.Any(x => x.LikerId == currentUserId && x.ImageId == imageId));



答案 1 :(得分:0)

我已经尝试了所有建议的方法,但是没有一个起作用,我最终要做的是删除该函数并将其重写在需要它的属性内。

这是我的意思:

'hasCurrentUserLiked'是我试图解决的问题。我并没有真正进行任何重大更改,只是更改了代码(不确定为什么这样做,但确实如此)

            (f, p) => new FeedsForReturnDto
            {
                Id = f.feed.Id,
                PhotoUrl = f.feed.photoUrl,
                Username = f.feed.Username,
                Description = f.feed.Description,
                DateAdded = f.feed.DateAdded,
                IsImage = f.feed.IsImage,
                // v Is the thing we were trying to figure out
                hasCurrentUserLiked = _context.PhotoLikes.Any(x => x.LikerId == user.Id && x.ImageId == f.feed.Id),
                Likes = _context.PhotoLikes.Where(x => x.ImageId == f.feed.Id).Count()
            });