我是Dapper Micro ORM的新手.到目前为止,我能够将它用于简单的ORM相关内容,但我无法使用类属性映射数据库列名.例如:
我有如下数据库表:
Table Name: Person
person_id int
first_name varchar(50)
last_name varchar(50)
Run Code Online (Sandbox Code Playgroud)
我有一个名为Person的课程
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请注意,表中的列名与我尝试映射查询结果的数据的类的属性名不同.
var sql = @"select top 1 PersonId,FirstName,LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
var person = conn.Query<Person>(sql).ToList();
return person;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为列名与对象的(Person)属性不匹配.在这种情况下,我可以在Dapper中手动映射(例如person_id => PersonId)具有对象属性的列名吗?
任何线索或帮助将受到高度赞赏.
我正在尝试使用带有Dapper和多映射的CTE来获取分页结果.我对重复的列感到不便; 例如,CTE阻止我使用Name列.
我想将以下查询映射到以下对象,而不是列名称和属性之间的不匹配.
查询:
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
Run Code Online (Sandbox Code Playgroud)
对象:
public class Site
{
public …Run Code Online (Sandbox Code Playgroud)