1

我正在研究Visual studio 2012 (C#)Entity Framework使用SQL server.

出于性能原因,我希望能够编辑后台 sql 查询代码并对其进行自定义。(使实体框架更加手动并控制它在后面产生的内容)。

我看到所有关于TraceToString这个的帖子不是我的意思,我需要能够在线编辑后台代码而不仅仅是显示。

编辑

if ((activityBox.Text != "") && (biasBox.Text == ""))
{
aggGk = (from sk in db.DIM_COV_TEST_AGGREGATION_KEY 
where activityGk.Contains(sk.COV_ACTIVITY_GK) && (sk.DATE_ID >= beginTime) 
&& (sk.DATE_ID <= endTime) 
select sk.TEST_AGGREGATION_KEY_GK).Distinct().ToList(); 
}
4

4 回答 4

4

我相信,如果您不影响性能,则需要遵循 TSQL 查询。如果您是 .NET 开发人员,您将熟悉 SQL 查询。

以下链接对不同选项进行了更大的比较

  1. 带有存储过程的实体框架 VS LINQ to SQL VS ADO.NET?

也可以将您的存储过程与 EF 一起使用。检查这两个链接

  1. http://msdn.microsoft.com/en-us/data/gg699321.aspx
  2. http://www.codeproject.com/Articles/522611/Entity-Framework-CRUD-Operations-Using-Stored-Proc

我们无法控制 EF 查询的执行,但我们当然可以优化 SQL 查询以获得更好的性能。您需要做的就是生成模型/实体类来处理数据。

于 2013-08-19T06:40:55.530 回答
1

您不能(轻松)影响框架生成的 SQL,您正在寻找的可能是Entity SQL(可能与ObjectQuery<T>结合使用),它可以让您在 Entity Framework 之上编写自己的查询。更灵活的方式。

于 2013-08-19T05:53:45.547 回答
0

从我的头顶上,我会说这是不可能的。拥有 OR 框架的全部意义在于避免进入 SQL 语言。

对于更富有成果的讨论,如果您通过编辑生成的 SQL 以及所涉及的实体来分享您想要完成的优化,那将是非常棒的。

我想添加以下链接 http://msdn.microsoft.com/en-us/library/bb399560.aspx

这并不完全是编辑从框架生成的 SQL,但您可以在需要一些性能调整的地方使用它。

于 2013-08-19T05:52:35.073 回答
0

对于某些您想要自定义的指定查询,您可以尝试DataContext.ExecuteQuery<TResult>(string query, params object[] parameters). 但是,如果您发现需要自定义的内容太多,则意味着在您的场景中使用 Entify 框架并不是一个好主意。

于 2013-08-19T05:57:02.560 回答