C# 如何将这个简单的实体框架查询转换为标准SQL查询?
我没有使用.NET实体框架的经验,我对该查询的具体内容有一些疑问: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
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]