在我的 .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&lt;YourClass&gt;(sql, parameters);

注意:您可以创建新类,然后像您的查询一样创建属性必须有一些(名称和数据类型)

【讨论】:

以上是关于在我的 .NET 核心控制台应用程序中运行原始 SQL 语句并将结果映射到 C# 变量的主要内容,如果未能解决你的问题,请参考以下文章

长时间运行的 ASP.NET MVC 核心控制器 HTTPPost 方法超时

我们如何在 .net 核心控制台应用程序中存储加密的 API 密钥

带有.net核心的控制台应用程序使用soap Web服务的问题

在.net核心应用程序中自托管HTTP(s)端点而不使用asp.net?

WPF .NET Core 中的 gRPC 错误

在我的应用程序 asp.net mvc 的后台运行此控制器和 javascript 代码