如何将此简单的实体框架查询转换为标准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,您只需在查询中调用.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
假设您的表名为"漏洞警报文档">
重试