Я пытаюсь использовать CTE с Dapper и multi-mapping, чтобы получить выгружаемые результаты. Я столкнулся с неудобством с дублирующимися столбцами; CTE мешает мне иметь имя столбцов, например.Пользовательское сопоставление в Dapper
Я хотел бы нанести следующий запрос на следующие объекты, а не на несоответствие между именами столбцов и свойствами.
Запрос:
WITH TempSites AS(
SELECT
[S].[SiteID],
[S].[Name] AS [SiteName],
[S].[Description],
[L].[LocationID],
[L].[Name] AS [LocationName],
[L].[Description] AS [LocationDescription],
[L].[SiteID] AS [LocationSiteID],
[L].[ReportingID]
FROM (
SELECT * FROM [dbo].[Sites] [1_S]
WHERE [1_S].[StatusID] = 0
ORDER BY [1_S].[Name]
OFFSET 10 * (1 - 1) ROWS
FETCH NEXT 10 ROWS ONLY
) S
LEFT JOIN [dbo].[Locations] [L] ON [S].[SiteID] = [L].[SiteID]
),
MaxItems AS (SELECT COUNT(SiteID) AS MaxItems FROM Sites)
SELECT *
FROM TempSites, MaxItems
Объекты:
public class Site
{
public int SiteID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Location> Locations { get; internal set; }
}
public class Location
{
public int LocationID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public Guid ReportingID { get; set; }
public int SiteID { get; set; }
}
По какой-то причине у меня есть это в моей голове, что существует соглашение об именовании, который будет обрабатывать этот сценарий для меня, но я не могу найти упоминания его в документах.
Я попытался закрыть этот вопрос, но у него есть открытая щедрость. Это дубликат. Вам необходимо использовать интерфейс ITypeMap и атрибуты. Читайте здесь: http://stackoverflow.com/questions/8902674/manually-map-column-names-with-class-properties –