我最近被要求接管使用Entity Framework的大型LOB应用程序。许多db调用使用了几个(> 5)Includes,这会导致一些非常繁重的查询效率低下。我想使用Visual Studio的搜索功能来查找其中一些包含链。作为一个简单的例子,可能看起来像:
var res = ObjectContext.Items.Include("Details")
.Include("Users").Include("Users.Info");
我想找到超过1个包含的任何实例,并且无论包含的路径是什么都匹配。
如何构建搜索以识别这些链?非常感谢任何帮助!
答案 0 :(得分:2)
VS2012使用.NET的正则表达式风格,因此您可以执行类似
的操作(?:[.]Include[(]\s*"[^"]*"\s*[)]\s*){2,}
这匹配一个.Include("something")
加上其后的任何空格,然后需要至少重复两次此模式。请注意,如果您的字符串包含引号或者您的字符串中包含逐字符串,则会出现问题。在这种情况下,"[^"]*"
必须更加精细。