[英]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查詢。
下面的鏈接提供了更多不同選項的比較
也可以在EF中使用您的存儲過程。 檢查這兩個鏈接
我們無法控制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.