2013-07-01 72 views
0

我最近被要求接管使用實體框架的大型LOB應用程序。許多db調用都使用了幾個(> 5)Includes,這會導致一些非常大的查詢效率低下。我想使用Visual Studio的搜索功能來查找其中的一些包含鏈。作爲一個簡單的例子,一個看起來像:使用Visual Studio查找.Include()鏈正則表達式搜索

var res = ObjectContext.Items.Include("Details") 
      .Include("Users").Include("Users.Info"); 

我想找到的超過1包括任何情況下,也不管什麼樣的包括路徑是相匹配。

如何構建搜索以識別這些鏈?任何幫助最受讚賞!

+0

爲什麼你不能只使用Visual Studio來查找事件?此外,你是否理解EF需要'Include()'方法調用的原因?你不能因爲覺得自己是性能問題而去除它們。 – Yuck

+0

這些情況是否有共同的開始?即它們總是以「ObjectContext。」開始。我問,因爲我之前被VS查找/替換過度廣泛的正則表達式查詢所燒燬。 –

+0

@keyboardP,你有它,我想用正則表達式來識別鏈,而不僅僅是一個實例。有幾百個實例。 –

回答

2

VS2012使用.NET的正則表達式的味道,所以你可以做這樣的事情

(?:[.]Include[(]\s*"[^"]*"\s*[)]\s*){2,} 

這符合一個.Include("something")加上後的任何空白,然後要求該圖案的至少兩個重複。請注意,如果您的字符串包含引號,或者您的字符串中有逐字字符串,則會出現問題。在這種情況下,"[^"]*"將不得不更加精細。

+0

正是我在找的東西,謝謝! –

相關問題