簡體   English   中英

如何編輯實體框架生成的SQL查詢?

[英]How to edit the sql query that Entity framework generated?

我正在使用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(); 
}

我相信,如果不影響性能,則需要遵循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查詢進行優化以提高性能。 您需要做的所有事情就是生成一個模型/實體類來處理數據。

您不能(輕松地)影響框架生成的SQL,您正在尋找的可能是實體SQL (可能與ObjectQuery <T>結合使用),它使您可以在實體框架的頂部編寫自己的查詢。更靈活的方式。

從我的頭頂上,我會說這是不可能的。 擁有OR框架的全部目的是避免進入SQL語言。

為了使討論更加富有成果,如果您共享希望通過編輯所生成的SQL及其所涉及的實體來進行哪種優化,那就太好了。

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

這並不是完全編輯從Framework生成的SQL,但是您可以在需要一些性能調整的地方使用它。

對於要自定義的某些指定查詢,可以嘗試DataContext.ExecuteQuery<TResult>(string query, params object[] parameters) 但是,如果您發現需要自定義的內容太多,則意味着在您的方案中使用Entify Framework不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM