рдирдорд╕реНрддреЗ!
рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдЗрд╕ рдмрд╛рд░, рдореИрдВ 4 рд╡реЗрдВ рд╕реЗ 6 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЗрд╕рдХреЗ рдмрд╛рдж рдИрдПрдл рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдореБрдлреНрдд рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдордХреНрдЦреА рдкрд░ рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд┐рдВрдЧ .NET рдХреЛрдбред рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдЕрдзрд┐рдХред
EF6 рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ: https://www.nuget.org/packages/EFlogger-For6/
EF4-5 рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ: https://www.nuget.org/packages/EFlogger-For4/
рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред
рдкрд░рд┐рдЪрдп
рдЬрдм рдореИрдВрдиреЗ EF рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореЗрд░реЗ рдорди рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛ рдХрд┐ EF рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреБрдЫ рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдирд╛рд░рд╛рдЬрдЧреА рдереА рдХрд┐ рдИрдПрдл рдирд┐рдпрдорд┐рдд рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ, рдЕрддреНрдпрдВрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ SQL рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ рдпрд╛ $ 389.00 рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдорд╣рдВрдЧреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЙрдкрдХрд░рдг рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ ,
рдИрдПрдл рд╕рдВрд╕реНрдХрд░рдг 6 рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдХрдорд╛рдВрдб рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИред рдПрдХ рддрдВрддреНрд░ рдкреНрд░рдХрдЯ рд╣реБрдЖ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
// IDbCommandInterceptor DbInterception.Add(new LogFormatter());
public class LogFormatter : IDbCommandInterceptor { private readonly Stopwatch _stopwatch = new Stopwatch(); public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { // _stopwatch.Restart(); } public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { // _stopwatch.Stop(); // Log(command, interceptionContext); } public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { _stopwatch.Restart(); } public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { _stopwatch.Stop(); Log(command, interceptionContext); } public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { _stopwatch.Restart(); } public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { _stopwatch.Stop(); Log(command, interceptionContext); } private void Log<TResult>(DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext) { Logger.Log(command, _stopwatch.ElapsedMilliseconds, interceptionContext.Exception); } }
public static class Logger { public static void Log(DbCommand command, long elapsedMilliseconds, Exception exception) { // Trace Trace.WriteLine(string.Format("Command:{0}, Elapsed Milliseconds:{1}", command.CommandText, elapsedMilliseconds)); } }
рдИрдПрдл рдХреЗ 4 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд▓реЙрдЧрд┐рдВрдЧ рддрдВрддреНрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдореЗрд░рд╛ рдлреИрд╕рд▓рд╛
рдореЗрд░реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░, рдПрдХ рднреБрдЧрддрд╛рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП, рдореИрдВ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдИрдПрдл рд╕рдВрд╕реНрдХрд░рдг 6 рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рддрдВрддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдИрдПрдл рд╕рдВрд╕реНрдХрд░рдг 4 рдореЗрдВ рдпрд╣ рддрдВрддреНрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЫреЛрдЯреА рдЧреБрдЧрд▓реА рдХреЗ рдмрд╛рдж , рдПрдПрд╕рдкреА рдПрдорд╡реАрд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдИрдПрдл рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рдорд┐рдиреАрдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
рдХреНрдпрд╛ рд╣реБрдЖ?
рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧ рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ред рдЖрдк Wordpress-e http://ef-logger.com/ рдкрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ
EF6 рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ: https://www.nuget.org/packages/EFlogger-For6/
рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдВрдбреЛ:
рдХреЗ рдЙрдкрдпреЛрдЧ
1. рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдЙрдард╛рдУ
2. рдкреБрд╕реНрддрдХрд╛рд▓рдп EFlogger.EntityFramework4.dll рдХреЛ EF 4-5 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ EFlogger.EntityFramework6.dll рдХреЗ рд▓рд┐рдП EF 6th рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
3. рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
// EF 6- EFloggerFor6.Initialize(); // EF 4- 6- EFloggerFor4.Initialize();
4. EFlogger.exe рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
рдПрдкреАрдЖрдИ
EFlogger.EntityFramework6.dl рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдпрджрд┐ EFlogger.EntityFramework4.dl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХреЛ EFloggerFor4 рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
// EFloggerFor6.Initialize(); // IP "127.0.0.1" EFloggerFor6.SetProfilerClientIP(тАЬ192.168.10.50тА│); // EFloggerFor6.WriteMessage(тАЬText messageтАЭ); // ( ) EFloggerFor6.StartSendToClient(); // EFloggerFor6.StopSendToClient(); // EFlogger.log EFloggerFor6.StartSaveToLogFile(); // EFlogger.log EFloggerFor6.StopSaveToLogFile(); // , EFloggerFor6.ClearLog(); // EFloggerFor6.DisableDecompiling(); // Stack Trace-a EFloggerFor6.ExcludeAssembly(тАЬMyAssemlyтАЭ);
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдИрдПрдл 4 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдВрддреНрд░ рдИрдПрдл 6 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред
EF 4 рдореЗрдВ DbProviderFactory рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдорд┐рдд рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
// DbProviderFactories.GetFactoryClasses(); // DbProviderFactories Type type = typeof(DbProviderFactories); DataTable table = null; // DataSet _configTable _providerTable object setOrTable = (type.GetField("_configTable", BindingFlags.NonPublic | BindingFlags.Static) ?? type.GetField("_providerTable", BindingFlags.NonPublic | BindingFlags.Static)).GetValue(null); var set = setOrTable as DataSet; if (set != null) table = set.Tables["DbProviderFactories"]; table = (DataTable)setOrTable; // DataTable foreach (DataRow row in table.Rows.Cast<DataRow>().ToList()) { DbProviderFactory factory; try { factory = DbProviderFactories.GetFactory(row); } catch (Exception) { continue; } var profType = EFProviderUtilities.ResolveFactoryType(factory.GetType()); if (profType != null) { DataRow profiled = table.NewRow(); profiled["Name"] = row["Name"]; profiled["Description"] = row["Description"]; profiled["InvariantName"] = row["InvariantName"]; profiled["AssemblyQualifiedName"] = profType.AssemblyQualifiedName; table.Rows.Remove(row); table.Rows.Add(profiled); } }
рдИрдПрдл 6 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
DbConfiguration.Loaded += (_, a) => a.ReplaceService<DbProviderServices>((s, k) => new EFProfiledDbProviderServices());
decompilation
рдордХреНрдЦреА рдкрд░ EFlogger рдХреЛрдб рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдпрд╛ рдЙрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, ILSpy рдкрд░рд╛рд╡рд░реНрддрдХ рдХреЗ рдореБрдХреНрдд рдПрдирд╛рд▓реЙрдЧ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдкрдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкрд░ рдЬрд╛рдХрд░ рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
public static string Get(out StackFrame outStackFrame) { outStackFrame = null; var frames = new StackTrace(0, true).GetFrames(); if (frames == null) { return ""; } var methods = new List<string>(); // foreach (StackFrame t in frames) { // var method = t.GetMethod(); // var assembly = method.Module.Assembly.GetName().Name; if (ShouldExcludeType(method) || AssembliesToExclude.Contains(assembly) || MethodsToExclude.Contains(method.Name)) continue; // , if (outStackFrame == null) { outStackFrame = t; } methods.Add(method.DeclaringType.FullName + ":" + method.Name); } return string.Join("\r\n", methods); }
private static string GetMethodBody(StackFrame stackFrame) { MethodBase methodBase = stackFrame.GetMethod(); return Decompiler.GetSourceCode(methodBase.Module.FullyQualifiedName, methodBase.DeclaringType.Name, methodBase.Name); }
Decompiler
using System; using System.IO; using System.Linq; using ICSharpCode.Decompiler; using ICSharpCode.Decompiler.Ast; using ICSharpCode.Decompiler.Ast.Transforms; using Mono.Cecil; namespace Common { public static class Decompiler { public static string GetSourceCode(string pathToAssembly, string className, string methodName) { try { var assemblyDefinition = AssemblyDefinition.ReadAssembly(pathToAssembly); TypeDefinition assembleDefenition = assemblyDefinition.MainModule.Types.First(type => type.Name == className); MethodDefinition methodDefinition = assembleDefenition.Methods.First(method => method.Name == methodName); var output = new StringWriter(); var plainTextOutput = new PlainTextOutput(output); DecompileMethod(methodDefinition, plainTextOutput); return output.ToString(); } catch (Exception exception) { return string.Format( "Exception in decompling. \r\n Message:{0}, \r\n Inner Exception:{1}, \r\n StackTrace:{2}",exception.Message, exception.InnerException, exception.StackTrace); } } private static void DecompileMethod(MethodDefinition method, ITextOutput output) { AstBuilder codeDomBuilder = CreateAstBuilder(currentType: method.DeclaringType, isSingleMember: true); if (method.IsConstructor && !method.IsStatic && !method.DeclaringType.IsValueType) { AddFieldsAndCtors(codeDomBuilder, method.DeclaringType, method.IsStatic); RunTransformsAndGenerateCode(codeDomBuilder, output); } else { codeDomBuilder.AddMethod(method); RunTransformsAndGenerateCode(codeDomBuilder, output); } } private static AstBuilder CreateAstBuilder(ModuleDefinition currentModule = null, TypeDefinition currentType = null, bool isSingleMember = false) { if (currentModule == null) currentModule = currentType.Module; var settings = new DecompilerSettings(); if (isSingleMember) { settings = settings.Clone(); settings.UsingDeclarations = false; } return new AstBuilder( new DecompilerContext(currentModule) { CurrentType = currentType, Settings = settings }); } private static void AddFieldsAndCtors(AstBuilder codeDomBuilder, TypeDefinition declaringType, bool isStatic) { foreach (var field in declaringType.Fields) { if (field.IsStatic == isStatic) codeDomBuilder.AddField(field); } foreach (var ctor in declaringType.Methods) { if (ctor.IsConstructor && ctor.IsStatic == isStatic) codeDomBuilder.AddMethod(ctor); } } private static void RunTransformsAndGenerateCode(AstBuilder astBuilder, ITextOutput output, IAstTransform additionalTransform = null) { astBuilder.GenerateCode(output); } } }
рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЕрдкрдШрдЯрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: yadi.sk/d/AzBGet5-wwns2
рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╡рд┐рдВрдбреЛ
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдордп-рд╕рдордп рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рдВрдбреЛ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред
рдореЗрд░рд╛ рд░реВрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдкреНрд░рдкрддреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
рдЬрдм рдЖрдк Send рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдИ-рдореЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
[STAThread] [STAThread] static void Main() { SetupLogger(); // if (!Debugger.IsAttached) { // Application.ThreadException += (sender, e) => HandleError(e.Exception); AppDomain.CurrentDomain.UnhandledException += (sender, e) => HandleError((Exception)e.ExceptionObject); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } private static void HandleError(Exception exception) { try { // try/catch new ErrorHandlerController(exception).Run(); } catch (Exception e) { MessageBox.Show("Error processing exception. Please send log file EFlogger.log to developer: " + Settings.Default.ProgrammerEmail + " \r\n Exception:" + e); // Logger.Error(e); if (MessageBox.Show("Attach debugger? \n Only for developer!!!", "Debugging...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Debugger.Launch(); throw; } } finally { // Windows Environment.Exit(1); } } //new ErrorHandlerController(exception).Run(); public void Run() { // string exceptionInfoText = string.Format( "An unexpected error occurred: {0}" + Environment.NewLine + "Time: {1} " + Environment.NewLine + "{2}" + Environment.NewLine + "InnerException: \n {3}" + Environment.NewLine + "InnerException StackTrace: \n {4}" + Environment.NewLine, _exception.Message, DateTime.Now, _exception, _exception.InnerException, _exception.InnerException != null ? _exception.InnerException.StackTrace : string.Empty ); // Program.Logger.Error(exceptionInfoText); _view.ExceptionInfoText = exceptionInfoText; // , ShowDialog, _view.ShowDialog(); }
рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╕реМрджреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: yadi.sk/d/7y4i_cz7NwtE3
рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА
рдЖрдк рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкреНрд▓рдЧ-рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рдмреАрдЪ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдг рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: C # рдореЗрдВ рдЯреАрд╕реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░
рдереЛрдбрд╛ рд╣рд╛рд╕реНрдп
рдХрд┐рд╕реА рдорд┐рддреНрд░ рдХреЗ
рдЬрд╛рдВрдЪ
рдЖрджреЗрд╢ рдкрд╛рда:
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей C]ред [рд╕реА рек] рдПрдПрд╕ [рд╕реА рез], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей]]ред [рдирд╛рдо] рдПрдПрд╕ [рдирд╛рдо], [Project238]ред [Name1] AS [Name1], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей C]ред [рд╕реА реи] рдПрдПрд╕ [рд╕реА реи], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей C]ред [рд╕реА рей] рдПрдПрд╕ [рд╕реА рей], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей C]ред [рд╕реА рез] рдПрдПрд╕ [рд╕реА рек] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [GroupBy1]ред [A1] AS [C1], [GroupBy1]ред [рдХреЗ рез] рдХреЗ рд░реВрдк рдореЗрдВ [рдирд╛рдо], [GroupBy1]ред [K2] AS [Name1], [GroupBy1]ред [рдХреЗ рей] рдПрдПрд╕ [рд╕реА реи], [GroupBy1]ред [рдХреЗ рек] рдПрдПрд╕ [рд╕реА рей], 1 AS [C4] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей1]ред [рдирд╛рдо] рдПрдПрд╕ [рдХреЗ рез], [Project237]ред [Name1] AS [K2], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей K]ред [рд╕реА рез] рдПрдПрд╕ [рдХреЗ рей], [рдкреНрд░реЛрдЬреЗрдХреНрдЯ реирей K]ред [рд╕реА реи] рдПрдПрд╕ [рдХреЗ рек], COUNT (1) AS [A1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [рдПрдХреНрд╕рдЯреЗрдВрдб 2]ред [рдирд╛рдо] рдПрдПрд╕ [рдирд╛рдо], [рдПрдХреНрд╕рдЯреЗрдВрдб 3]ред [рдирд╛рдо] рдПрдПрд╕ [рдирд╛рдо рез], DATEPART (рд╡рд░реНрд╖, [Join3]ред [C11]) AS [C1], DATEPART (рдорд╣реАрдирд╛, [Join3]ред [C12]) AS [C2] [рдСрдХреНрдпреВрдкреЗрд╢рдирд╣рд┐рд╕реНрдЯреЛрд░] рдХреЗ рд░реВрдк рдореЗрдВ [рдПрдХреНрд╕рдЯреЗрдВрдЯ 1] INNER JOIN [рдбрд┐рд╡реАрдЬрди] AS [рдПрдХреНрд╕рдЯреЗрдВрдЯ 2] рдкрд░ [рдПрдХреНрд╕рдЯреЗрдВрдЯ 1]ред [рдбрд┐рд╡реАрдЬрди] = [рдПрдХреНрд╕рдЯреЗрдВрдЯ 2] [рдИрдбреА]ред INNER JOIN [рд╕реНрдерд┐рддрд┐] AS [Extent3] ON [Extent1]ред [PositionID] = [Extent3] [Id]ред рдХреНрд░реЛрд╕ рдЬреЙрдЗрди (Select [UnionAll59]ред [C1] AS [C11], [UnionAll1188] [C1] AS [C12]ред рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll58]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll57]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll56]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll55]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll54]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll53]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll52]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll51]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll50]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll49]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll48]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll47]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll46]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll45]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll44]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll43]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll42]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll41]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll40]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll39]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll38]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll37]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll36]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll35]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll34]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll33]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll32]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll31]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll30]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll29]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll28]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll27]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll26]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll25]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll24]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll23]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll22]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll21]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll20]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll19]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll18]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll17]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll16]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll15]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll14]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll13]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll12]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll11]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll10]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll9]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll8]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll7]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll6]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll5]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll4]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll3]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll2]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll1]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-01-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable1] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-02-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable2]) AS [UnionAll1] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЗрдо, '2001-03-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable3]) AS [UnionAll2] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-04-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable4]) AS [UnionAll3] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-05-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable5]) AS [UnionAll4] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-06-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable6]) AS [UnionAll5] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-07-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable7]) AS [UnionAll6] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-08-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable8]) AS [UnionAll7] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЗрдо, '2001-09-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable9]) AS [UnionAll8] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-10-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable10]) AS [UnionAll9] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-11-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable11]) AS [UnionAll10] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-12-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable12]) AS [UnionAll11] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-01-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable13]) AS [UnionAll12] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-02-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable14]) AS [UnionAll13] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-03-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable15]) AS [UnionAll14] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-04-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable16]) AS [UnionAll15] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-05-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable17]) AS [UnionAll16] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-06-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable18]) AS [UnionAll17] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-07-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable19]) AS [UnionAll18] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-08-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable20]) AS [UnionAll19] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-09-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable21]) AS [UnionAll20] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-10-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable22]) AS [UnionAll21] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-11-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable23]) AS [UnionAll22] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2002-12-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable24]) AS [UnionAll23] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-01-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable25]) AS [UnionAll24] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-02-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable26]) AS [UnionAll25] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2003-03-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable27]) AS [UnionAll26] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-04-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable28]) AS [UnionAll27] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-05-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable29]) AS [UnionAll28] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-06-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable30]) AS [UnionAll29] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-07-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable31]) AS [UnionAll30] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-08-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable32]) AS [UnionAll31] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-09-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable33]) AS [UnionAll32] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2003-10-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable34]) AS [UnionAll33] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2003-11-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable35]) AS [UnionAll34] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-12-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable36]) AS [UnionAll35] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-01-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable37]) AS [UnionAll36] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-02-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable38]) AS [UnionAll37] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-03-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable39]) AS [UnionAll38] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-04-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable40]) AS [UnionAll39] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-05-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable41]) AS [UnionAll40] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-06-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable42]) AS [UnionAll41] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-07-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable43]) AS [UnionAll42] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-08-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable44]) AS [UnionAll43] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-09-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable45]) AS [UnionAll44] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-10-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable46]) AS [UnionAll45] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-11-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable47]) AS [UnionAll46] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2004-12-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable48]) AS [UnionAll47] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-01-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable49]) AS [UnionAll48] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2005-02-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable50]) AS [UnionAll49] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-03-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable51] рдХреЗ рд░реВрдк рдореЗрдВ [UnionAll50] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-04-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable52] рдХреЗ рд░реВрдк рдореЗрдВ [UnionAll51] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-05-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable53]) AS [UnionAll52] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-06-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable54]) AS [UnionAll53] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-07-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable55]) AS [UnionAll54] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-08-01 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable56]) AS [UnionAll55] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-09-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable57]) AS [UnionAll56] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-10-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable58]) AS [UnionAll57] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2005-11-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable59]) AS [UnionAll58] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2005-12-01 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable60]) AS [UnionAll59] ININ JOIN (рд╕реЗрд▓реЗрдХреНрдЯ рдХрд░реЗрдВ [UnionAll117]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll116]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll115]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll114]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll113]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll112]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll111]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll110]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll109]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll108]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll107]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll106]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll105]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll104]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll103]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll102]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll101]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll100]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll99]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll98]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll97]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll96]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll95]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll94]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll93]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll92]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll91]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll90]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll89]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll88]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll87]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll86]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll85]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll84]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll83]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll82]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll81]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll80]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll79]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll78]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll77]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll76]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll75]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll74]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll73]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll72]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll71]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll70]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll69]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll68]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll67]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll66]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll65]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll64]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll63]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll62]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll61]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) [UnionAll60]ред [C1] AS [C1] рд╕реЗ (рдЪрдпрди рдХрд░реЗрдВ) рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-01-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable61] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-02-28 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable62]) AS [UnionAll60] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-03-31 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable63]) AS [UnionAll61] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-04-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable64]) AS [UnionAll62] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-05-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable65]) AS [UnionAll63] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-06-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable66]) AS [UnionAll64] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-07-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable67]) AS [UnionAll65] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-08-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable68]) AS [UnionAll66] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-09-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable69]) AS [UnionAll67] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-10-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable70]) AS [UnionAll68] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-11-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable71]) AS [UnionAll69] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2001-12-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable72]) AS [UnionAll70] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-01-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable73]) AS [UnionAll71] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-02-28 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable74]) AS [UnionAll72] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-03-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable75]) AS [UnionAll73] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-04-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable76]) AS [UnionAll74] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-05-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable77]) AS [UnionAll75] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-06-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable78]) AS [UnionAll76] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-07-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable79]) AS [UnionAll77] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-08-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable80]) AS [UnionAll78] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-09-30 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable81]) AS [UnionAll79] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-10-31 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable82]) AS [UnionAll80] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2002-11-30 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable83]) AS [UnionAll81] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2002-12-31 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable84]) AS [UnionAll82] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбрд╛рдЗрдордЯрд╛рдЗрдо, '2003-01-31 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable85]) AS [UnionAll83] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдХрдиреНрд╡рд░реНрдЯ (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2003-02-28 00: 00: 00.000', 121) рдПрдПрд╕ [рд╕реА 1] FROM (Select 1 AS X) AS [SingleRowTable86]) AS [UnionAll84] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо, '2003-03-31 00: 00: 00.000', 121) AS [C1] FROM (Select 1 AS X) AS [SingleRowTable87]) AS [UnionAll85] рдпреВрдирд┐рдЕрди рдСрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-04-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable88]) AS [UnionAll86] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-05-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable89]) AS [UnionAll87] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-06-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable90]) AS [UnionAll88] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-07-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable91]) AS [UnionAll89] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-08-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable92]) AS [UnionAll90] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-09-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable93]) AS [UnionAll91] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-10-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable94]) AS [UnionAll92] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-11-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable95]) AS [UnionAll93] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2003-12-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable96]) AS [UnionAll94] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-01-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable97]) AS [UnionAll95] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-02-29 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable98]) AS [UnionAll96] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-03-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable99]) AS [UnionAll97] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-04-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable100]) AS [UnionAll98] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-05-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable101]) AS [UnionAll99] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-06-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable102]) AS [UnionAll100] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-07-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable103]) AS [UnionAll101] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-08-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable104]) AS [UnionAll102] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-09-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable105]) AS [UnionAll103] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-10-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable106]) AS [UnionAll104] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-11-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable107]) AS [UnionAll105] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2004-12-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable108]) AS [UnionAll106] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-01-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable109]) AS [UnionAll107] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-02-28 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable110]) AS [UnionAll108] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-03-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable111]) AS [UnionAll109] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-04-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable112]) AS [UnionAll110] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-05-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable113]) AS [UnionAll111] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-06-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable114]) AS [UnionAll112] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-07-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable115]) AS [UnionAll113] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-08-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable116]) AS [UnionAll114] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-09-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable117]) AS [UnionAll115] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-10-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable118]) AS [UnionAll116] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-11-30 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable119]) AS [UnionAll117] UNION ALL рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ convert(datetime, '2005-12-31 00:00:00.000', 121) AS [C1] FROM ( SELECT 1 AS X ) AS [SingleRowTable120]) AS [UnionAll118] ON (((DATEPART (year, [UnionAll59].[C1])) = (DATEPART (year, [UnionAll118].[C1]))) OR ((DATEPART (year, [UnionAll59].[C1]) IS NULL) AND (DATEPART (year, [UnionAll118].[C1]) IS NULL))) AND (((DATEPART (month, [UnionAll59].[C1])) = (DATEPART (month, [UnionAll118].[C1]))) OR ((DATEPART (month, [UnionAll59].[C1]) IS NULL) AND (DATEPART (month, [UnionAll118].[C1]) IS NULL))) ) AS [Join3] WHERE ([Extent1].[StartDate] <= [Join3].[C12]) AND ((CASE WHEN ([Extent1].[EndDate] IS NOT NULL) THEN [Extent1].[EndDate] ELSE GetDate() END) >= [Join3].[C11]) ) AS [Project237] GROUP BY [Project237].[Name], [Project237].[Name1], [Project237].[C1], [Project237].[C2] ) AS [GroupBy1] ) AS [Project238] ORDER BY [Project238].[C2] ASC, [Project238].[C3] ASC, [Project238].[Name] ASC, [Project238].[Name1] ASC; Method Name:GetEmployeesCount; Class Name:CompanyEmployees.Data.ReportBuilder; Elapsed Miliseconds:336
рдЕрдВрддрднрд╛рд╖рдг
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрднреА рднреА рдХрдИ рдХреАрдбрд╝реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдПрдХ рд╕рдореНрдорд╛рдирд┐рдд рд╕рдореБрджрд╛рдп рд╕реЗ рд╕рд▓рд╛рд╣ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рддрд░рдл рдореИрдВ рдПрдХ рдореБрдлреНрдд рдЙрддреНрдкрд╛рдж рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреБрдЫ рдкреИрд╕реЗ рдХрдорд╛ рд╕рдХрддрд╛ рд╣реВрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлреНрдд рдмрдирд╛рдиреЗ рдФрд░ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ 20-30 рд░реБрдкрдпреЗ рдХреЗ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдкрд░ред рдЦреИрд░, рдпрд╛ рдЗрд╕реЗ рдПрдХ рджрд╛рди рдмрдЯрди рдХреЗ рд╕рд╛рде рдореБрдХреНрдд рдЫреЛрдбрд╝ рджреЗрдВред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджредрдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдХрд░рдг рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдкреБрдирд╢реНрдЪ: рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ, рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд▓ рдкрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: developer@ef-logger.com рдпрд╛ st.glushak@gmail.comред
EF6 рдХреЗ рд▓рд┐рдП Nuget рдкреИрдХреЗрдЬ: https://www.nuget.org/packages/EFlogger-For6/
Nuget рдкреИрдХреЗрдЬ EF4 рдХреЗ рд▓рд┐рдП - 5: https://www.nuget.org/packages/EFlogger-For4 & # 39;
рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: рдПрдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: