在我的 .NET 核心控制台应用程序中运行原始 SQL 语句并将结果映射到 C# 变量
Posted
技术标签:
【中文标题】在我的 .NET 核心控制台应用程序中运行原始 SQL 语句并将结果映射到 C# 变量【英文标题】:Run raw SQL statement inside my .NET core console application and map the results to C# variables 【发布时间】:2021-06-22 19:38:05 【问题描述】:我有以下 SQL 语句从我的 SQL Server 数据库中的多个表中获取数据:
SELECT max(ad.ORG_NAME) AS "Account", wo.WORKORDERID AS "Request ID", max(aau.FIRST_NAME) AS "Requester", max(aci.emailid) "Email ID",max(wo.TITLE) AS "Request Title", max(ti.FIRST_NAME) AS "Technician", longtodate(max(srm.Responsetime)) AS "Survey responded Time", max(srcmt.COMMENTTEXT) AS "Comments",max(srm.result) "Over All Satisfaction Level" FROM SurveyResponseRequestMapping srrm
INNER JOIN Survey_Response_Main srm ON srrm.RESPONSEID=srm.RESPONSEID
INNER JOIN Survey_Response_Answer sra ON srm.RESPONSEID=sra.RESPONSEID
LEFT JOIN Survey_Response_Comment srcmt ON srm.RESPONSEID=srcmt.RESPONSEID
LEFT JOIN WorkOrder wo ON srrm.WORKORDERID=wo.WORKORDERID
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID
LEFT JOIN SDUser td ON wos.OWNERID=td.USERID
LEFT JOIN AaaUser ti ON td.USERID=ti.USER_ID
LEFT JOIN SDUser sdu ON wo.REQUESTERID=sdu.USERID
LEFT JOIN AaaUser aau ON sdu.USERID=aau.USER_ID
INNER JOIN AccountSiteMapping asm ON wo.siteid=asm.siteid
INNER JOIN AccountDefinition ad ON asm.accountid=ad.org_id
left join aaausercontactinfo auci on auci.user_id = sdu.userid
left join aaacontactinfo aci on aci.contactinfo_id = auci.contactinfo_id
where srm.RESPONSETIME>=DATETOLONG('2021-03-22 00:00:00') and srm.RESPONSETIME<=DATETOLONG('2021-03-31 23:59:59')
GROUP BY wo.WORKORDERID order by 7
我的问题是我是否可以在我的 .NET 核心控制台应用程序中运行这个原始 SQL 语句并将返回的列映射到 C# 变量中?
谢谢
【问题讨论】:
你看过Dapper @Hayden 谢谢回复.. 没用过.. 和 EF core 类似吗? 它是一个微观结构,可以让您执行原始查询并映射到对象。 @Hayden 好的,我看到我阅读了文档,但它有点糟糕......它没有完全解释我们如何将列映射到 c# 变量 简单。使用 Adatper 并将数据放入 DataTable。每列相当于一个变量。请参阅:docs.microsoft.com/en-us/dotnet/api/… 【参考方案1】:您可以使用Dapper 运行原始 SQL 代码并将值设置为类
示例
var data = await connection.QueryAsync<YourClass>(sql, parameters);
注意:您可以创建新类,然后像您的查询一样创建属性必须有一些(名称和数据类型)
【讨论】:
以上是关于在我的 .NET 核心控制台应用程序中运行原始 SQL 语句并将结果映射到 C# 变量的主要内容,如果未能解决你的问题,请参考以下文章
长时间运行的 ASP.NET MVC 核心控制器 HTTPPost 方法超时
我们如何在 .net 核心控制台应用程序中存储加密的 API 密钥
带有.net核心的控制台应用程序使用soap Web服务的问题