Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将这个简单的实体框架查询转换为标准SQL查询?_C#_.net_Sql Server_Entity Framework_Entity Framework 4 - Fatal编程技术网

C# 如何将这个简单的实体框架查询转换为标准SQL查询?

C# 如何将这个简单的实体框架查询转换为标准SQL查询?,c#,.net,sql-server,entity-framework,entity-framework-4,C#,.net,Sql Server,Entity Framework,Entity Framework 4,我没有使用.NET实体框架的经验,我对该查询的具体内容有一些疑问: using (MyCorpo.EarlyWarnings.Model.EarlyWarningsEntities context = new Model.EarlyWarningsEntities()) { DBContext.SetTimeout(context); model.VulnerabilitySeverityAverage = (from x in context.Vulnerabili

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

using (MyCorpo.EarlyWarnings.Model.EarlyWarningsEntities context = new Model.EarlyWarningsEntities()) 
{
    DBContext.SetTimeout(context);    

    model.VulnerabilitySeverityAverage = (from x in context.VulnerabilityAlertDocuments select x.Severity).Average();
}
(其中model.VulnerabilitySeverityAverage的类型只是一个字符串)

因此我认为,VulnerabilityAlertDocuments映射VulnerabilityAlertDocument数据库表,因为在早期警告实体中,我有以下内容:

public DbSet<VulnerabilityAlertDocument> VulnerabilityAlertDocuments { get; set; }
公共数据库集漏洞警报文档{get;set;} 因此,我正在对表示数据库上我的VulnerabilityAlertDocuments表的查询的VulnerabilityAlertDocumentsDbSet对象执行查询。对吗

那么,前面的查询具体是什么呢

我认为它选择了脆弱性AlertDocument表中所有记录的严重性字段值,并根据所有这些值计算平均值

我的推理正确吗

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

Tnx

假设您的表名为“VulnerabilityAlertDocuments”

再试一次

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

要查看实际的SQL,只需对查询调用
.ToString()
方法

var sql = (from x in context.VulnerabilityAlertDocuments select x.Severity).Average().ToString();
因此,我正在对VulnerabilityAlertDocuments数据库集执行一个查询 对象,该对象表示对我的VulnerabilityAlertDocument表的查询 在我的数据库上。对吗

您的查询将在ValnerabilityAlertDocuments表的严重性列中显示平均值。 您翻译的查询看起来与此类似:

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    AVG([Extent1].[Severity]) AS [A1]
    FROM [dbo].[ValnerabilityAlertDocuments] AS [Extent1]
)  AS [GroupBy1]
您也可以尝试使用以下工具:

更新:
只是添加到工具列表中(感谢Dismissible)

mmm,您的查询是什么DBMS?在Microsoft SQL Server上出现错误是因为没有“x”变量LinqPad也是查看EF查询生成的SQL的一个很好的工具。
So what exatly do the previous query?
SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    AVG([Extent1].[Severity]) AS [A1]
    FROM [dbo].[ValnerabilityAlertDocuments] AS [Extent1]
)  AS [GroupBy1]