Более щадящий запрос, объединяющий атрибуты для использования с нумерацией страниц - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть этот запрос, который показывает все мои лодки, но я просто хотел бы показать активные лодки.

    public Pagination<Boats> GetAll(string name , int pageSize, int pageNumber)
    {
        var cn = Db.Database.Connection;

        var sql = @"SELECT * FROM Boats" +
                  "WHERE (@Name IS NULL OR Name LIKE @Name + '%')" +
                  "ORDER BY [Name ] " +
                  "OFFSET " + pageSize * (pageNumber - 1) + " ROWS " +
                  "FETCH NEXT " + pageSize + " ROWS ONLY " +
                  " " +
                  "SELECT COUNT(Id) FROM Boats" +
                  "WHERE (@Name IS NULL OR Name LIKE @Name + '%')";

        var multi = cn.QueryMultiple(sql, new { Name = name });
        var boats= multi.Read<Boats >();
        var total = multi.Read<int>().FirstOrDefault();

        var paginationList= new Pagination<Boats>()
        {
            List = boats,
            Count = total
        };

        return paginationList;

    }

У меня есть активные и исключенные атрибуты в таблице, поэтому я попытался показать толькоЛодки, которые были активны, но с этим запросом он продолжает возвращать все записи из таблицы Лодок, например, frist one

                  var sql = @"SELECT * FROM Boats " +
                  "WHERE (@Name IS NULL OR Name LIKE @Name + '%' AND  Active=1 AND Excluded=0)" +
                  "ORDER BY [Name] " +
                  "OFFSET " + pageSize * (pageNumber - 1) + " ROWS " +
                  "FETCH NEXT " + pageSize + " ROWS ONLY " +
                  " " +
                  "SELECT COUNT(Id) FROM Boats " +
                  "WHERE (@Name IS NULL OR Name LIKE @Name + '%' AND  Active=1 AND Excluded=0)";

Любые идеи, как я могу объединить атрибут Name с атрибутами Active и Excluded?

1 Ответ

0 голосов
/ 21 декабря 2018

Удалить из скобок:

"WHERE (@Name IS NULL OR Name LIKE @Name + '%') AND Active=1 AND Excluded=0"

...