c# - 如何在我的 Dot net core 项目中执行原始 SQL 查询?或者如何将它翻译成Linq?
问题描述
我很难找到有关执行原始查询的任何信息,我不知道如何将其转换为 LINQ,或者是否有可能。
我的 DBSet 中有 ContactRecords 但我真的不希望这样,我只需要进行多次计数..原始查询..
我需要做多个 COUNT 并使用我创建的数据库函数“usp_Parse_domain_name_v5”:
这是我试图在我的 DOT NET CORE 应用程序中执行的查询:
SELECT
dbo.usp_Parse_domain_name_v5(ContactRecord.URL),
COUNT(ContactRecord.ContactId) AS TOTAL_IMPRESSIONS,
COUNT(DISTINCT ContactAttribute.ContactAttributeValue) AS UNIQUE_IMPRESSIONS,
COUNT(DISTINCT LEADS.LEAD_ID) AS CONVERSIONS,
MAX(convert(varchar(10), ContactRecord.CallStartDateTime, 102)) AS 'DATE'
FROM
ContactAttribute
LEFT JOIN ContactRecord ON ContactRecord.ContactId = ContactAttribute.ContactId AND ContactAttribute.ContactAttributeName = 'IP'
LEFT JOIN LEADS
ON LEADS.LEAD_ID = ContactRecord.ContactId
AND LEADS.EMAIL IS NOT NULL AND LEADS.PHONENUMBER IS NOT NULL
AND LEADS.FIRSTNAME IS NOT NULL AND LEADS.LASTNAME IS NOT NULL
WHERE
convert(varchar(10), ContactRecord.CallStartDateTime, 102) = '2019.05.16'
GROUP BY
dbo.usp_Parse_domain_name_v5(URL)
ORDER BY
COUNT(ContactRecord.ContactId) DESC;
解决方案
为什么要用linq解决?您还可以编写一个存储过程并调用它。那更容易。如果查询太复杂,我总是使用存储过程而不是 linq。这是一个例子;点网核心中的存储过程
推荐阅读
- typescript - 如何使用自定义 Azure Devops 扩展 index.ts 中的连接服务?
- mysql - Laravel 的 ORM 是如何指定数据的排序值的?
- google-cloud-platform - Google Cloud Vision API 返回“429 - Quota Exceeded”
- google-cloud-platform - 运行 Google BigQuery 示例网络分析脚本,我得到一个语法错误: 期待:
- oracle - 为什么 Oracle 用 fetch 改变 rowid?
- java - 使用构建器模式编写数据类
- wordpress - 我可以让 Wordpress 搜索栏过滤器只提供来自博客而不是来自 woocommerce 的文章吗?
- mysql - 这段代码在数据库中发布对象可能有什么问题?
- python - 如何限制对未定义类/实例变量的访问?
- docker - Docker compose 没有从 swarm 主机中找到网络