如何将此简单的实体框架查询转换为标准SQL查询

本文关键字:查询 转换 标准 SQL 框架 实体 简单 | 更新日期: 2023-09-27 17:51:22

我没有使用.NET实体框架的经验,我对这个查询的具体内容有一些疑问:

using (MyCorpo.EarlyWarnings.Model.EarlyWarningsEntities context = new Model.EarlyWarningsEntities()) 
{
    DBContext.SetTimeout(context);    
    model.VulnerabilitySeverityAverage = (from x in context.VulnerabilityAlertDocuments select x.Severity).Average();
}

(其中模型的类型。脆弱性平均值只是一个字符串(

因此,我认为VulnerabilityAlertDocument映射脆弱性AlertDocument数据库表,因为在EarlyWarningsEntitys中,我有以下内容:

public DbSet<VulnerabilityAlertDocument> VulnerabilityAlertDocuments { get; set; }

因此,我正在对VulnerabilityAlertDocumentsDbSet对象执行查询,该对象表示对我的数据库上的脆弱性AlertDocuments表的查询。这是正确的吗?

那么,上一个查询具体是什么呢?

我认为它选择VulnerabilityAlertDocument表中所有记录的Severity字段值,并根据所有这些值计算可用性值。

我的推理正确吗?

如何在经典SQL查询中转换此实体查询?有人能帮我吗?

Tnx

如何将此简单的实体框架查询转换为标准SQL查询

如何在经典SQL查询中转换此实体查询?

要查看实际的SQL,您只需在查询中调用.ToString()方法;

var sql = (from x in context.VulnerabilityAlertDocuments select x.Severity).Average().ToString();

因此,我正在对VulnerabilityAlertDocuments数据库集执行查询对象,表示对我的VulnerabilityAlertDocument表的查询在我的数据库中。这是正确的吗?

So what exatly do the previous query?

您的查询将在ValnerabilityAlertDocuments表的Severity列中取平均值。你的翻译查询看起来像这样:

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    AVG([Extent1].[Severity]) AS [A1]
    FROM [dbo].[ValnerabilityAlertDocuments] AS [Extent1]
)  AS [GroupBy1]

您也可以尝试使用SQL Server Profiler 这样的工具

更新:只是将LinqPad添加到工具列表中(感谢Dismissile(

Select Average(x.Severity)
From VulnerabilityAlertDocuments x

假设您的表名为"漏洞警报文档">

重试