【发布时间】:2016-11-20 10:34:27
【问题描述】:
我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果。我遇到了重复列的不便;例如,CTE 使我不必为列命名。
我想将以下查询映射到以下对象,而不是列名和属性之间的不匹配。
查询:
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 接口和属性。在这里阅读:stackoverflow.com/questions/8902674/…
标签: c# .net sql-server dapper