У меня есть следующая таблица базы данных:
TABLE [dbo].[Horse]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(250) NOT NULL,
[HorseId] INT NOT NULL
CONSTRAINT [PK_Shows] PRIMARY KEY CLUSTERED ([Id] ASC)
)
и таблица Riders
:
TABLE [dbo].[HorseRider]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(250) NOT NULL,
[HorseRiderId] INT NOT NULL,
[HorseId] INT NOT NULL,
[Birthday] DATETIME
CONSTRAINT [PK_Cast] PRIMARY KEY CLUSTERED ([Id] ASC)
);
Я пытаюсь выполнить нумерацию страниц через Dapper.
Например, скажем, что для каждой страницы я хочу получить 10 лошадей, а для каждой лошади - всадников, которые на ней катались. Поэтому я создал модель данных для результата такого запроса:
public class HorseWithRiders
{
public int HorseId { get; set; }
public string Name { get; set; }
List<Riders> Rider { get; set; }
}
public class Rider
{
public int RiderId { get; set; }
public string Name { get; set; }
public string Birthday { get; set; }
}
А для Dapper, скорее всего, будет что-то вроде:
var result = connection.QueryFirst<List<HorseWithRiders>>(...query...);
Теперь .. может быть, есть какой-то недостаток в том, как я структурировал вещи ... но мне не удалось получить правильный запрос. Не могли бы вы помочь мне найти запрос, который соответствует созданной мной модели данных, но в то же время разбит на страницы? Сочетание двух вещей - это то, с чем я борюсь. Причина такой структуры данных в том, что я хочу обработать результат этого запроса через API как Json, который выглядит примерно так:
[
{
"HorseId" : 1,
"Name" : Name,
"Riders":[
{
"RiderId" : 21,
"Name" : RiderName,
"Birthday": 01/01/1990
},
{
"RiderId" : 22,
"Name" : RiderName,
"Birthday": 02/02/1990
}
]
},
{
"HorseId" : 2,
"Name" : Name,
"Riders":[
{
"RiderId" : 24,
"Name" : RiderName,
"Birthday": 01/01/1990
},
{
"RiderId" : 25,
"Name" : RiderName,
"Birthday": 02/02/1990
},
{
"RiderId" : 26,
"Name" : RiderName,
"Birthday": 02/02/1990
}
]
}
]
Заранее спасибо!
РЕДАКТИРОВАТЬ: запрос:
select [Horse].Name, [HorseRider].Name, [HorseRider].PersonId, [HorseRider].Birthday, [HorseRider].HorseId from [HorseRider]
JOIN [Horse] on [Horse].HorseId= [HorseRider].HorseId
where [HorseRider].HorseId= @value
order by [HorseRider].Birthday desc