Ostatnio zostałem poproszony o przejęcie dużejAplikacja LOB korzystająca z Entity Framework. Wiele wywołań db wykorzystuje kilka (> 5) opcji Includes, co powoduje bardzo dużą nieefektywność zapytań. Chcę użyć funkcji wyszukiwania programu Visual Studio, aby znaleźć niektóre z nich obejmują łańcuchy. Jako szybki przykład, może wyglądać tak:
var res = ObjectContext.Items.Include("Details")
.Include("Users").Include("Users.Info");
Chciałbym znaleźć dowolne wystąpienie więcej niż 1, i dopasować niezależnie od tego, co jest ścieżka dołączania.
Jak mogę uporządkować wyszukiwanie, aby zidentyfikować te łańcuchy? Każda pomoc jest najbardziej ceniona!
Odpowiedzi:
2 dla odpowiedzi № 1VS2012 używa smaku regex .NET, więc możesz zrobić coś takiego
(?:[.]Include[(]s*"[^"]*"s*[)]s*){2,}
To pasuje do jednego .Include("something")
plus dowolna biała przestrzeń po nim, a następnie wymagaco najmniej dwa powtórzenia tego wzoru. Zauważ, że będziesz mieć problemy, jeśli twoje ciągi zawierają cytaty lub masz tam ciągi znaków. "[^"]*"
musiałyby być nieco bardziej wyszukane.