public static string GetCommonStatistics() { StringBuilder sb = new StringBuilder(); CLRInfo inf = GetCLRInfo(); sb.AppendFormat("COMMON STATISTICS:\r\n"); sb.AppendFormat("Current version: {0}\r\n", ClientVersion.CurrentVersion); sb.AppendFormat("Current build: {0}\r\n", ClientVersion.CurrentBuild); sb.AppendFormat("Current path: {0}\r\n", Environment.CurrentDirectory); sb.AppendFormat("System path: {0}\r\n", Environment.SystemDirectory); sb.AppendFormat("Command line: {0}\r\n", Environment.CommandLine); sb.AppendFormat("OS version: {0}\r\n", Environment.OSVersion); sb.AppendFormat("CPU count: {0}\r\n", Environment.ProcessorCount); sb.AppendFormat("Machine name: {0}\r\n", Environment.MachineName); sb.AppendFormat("CLR version: {0} ({1})\r\n", inf.Version, inf.RawClrVersion); sb.AppendFormat("Working set: {0}Mb\r\n", Environment.WorkingSet / 1024 / 1024); sb.AppendFormat("Application data: {0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); sb.AppendFormat("Temp path: {0}\r\n", Path.GetTempPath()); sb.AppendFormat("CurrentCulture: {0}\r\n", CultureInfo.CurrentCulture); sb.AppendFormat("CurrentUICulture: {0}\r\n", CultureInfo.CurrentUICulture); sb.AppendFormat("CurrentUICulture.Name: {0}\r\n", CultureInfo.CurrentUICulture.Name); sb.AppendFormat("InstalledUICulture: {0}\r\n", CultureInfo.InstalledUICulture); sb.AppendFormat("InvariantCulture: {0}\r\n", CultureInfo.InvariantCulture); sb.AppendFormat("UTC offset: {0}\r\n", (DateTime.Now - DateTime.UtcNow).TotalHours); sb.AppendFormat(".NET4 client installed {0}\r\n", inf.IsNET4ClientInstalled); sb.AppendFormat(".NET4 full installed {0}\r\n", inf.IsNET4FullInstalled); sb.AppendFormat(".NET CLR versions installed:\r\n"); foreach (NETVersionInfo v in inf.NETVersionsInstalled) { sb.AppendFormat("- .NET version: {0}\r\n", v); } if (ApplicationDeployment.IsNetworkDeployed) { sb.AppendFormat("Application is network deployed:\r\n"); sb.AppendFormat(" - ActivationUri {0}\r\n", ApplicationDeployment.CurrentDeployment.ActivationUri); sb.AppendFormat(" - CurrentVersion {0}\r\n", ApplicationDeployment.CurrentDeployment.CurrentVersion); sb.AppendFormat(" - DataDirectory {0}\r\n", ApplicationDeployment.CurrentDeployment.DataDirectory); sb.AppendFormat(" - IsFirstRun {0}\r\n", ApplicationDeployment.CurrentDeployment.IsFirstRun); sb.AppendFormat(" - TimeOfLastUpdateCheck {0}\r\n", ApplicationDeployment.CurrentDeployment.TimeOfLastUpdateCheck); sb.AppendFormat(" - UpdatedApplicationFullName {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdatedApplicationFullName); sb.AppendFormat(" - UpdatedVersion {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdatedVersion); sb.AppendFormat(" - UpdateLocation {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdateLocation); } else { sb.AppendFormat("Application is not network deployed.\r\n"); } return(sb.ToString()); }
// The example displays output similar to the following: // v2.0.50727 2.0.50727.4927 SP2 // v3.0 3.0.30729.4926 SP2 // v3.5 3.5.30729.4926 SP1 // v4.0 // Client 4.0.0.0 public static CLRInfo GetCLRInfo() { CLRInfo rv = new CLRInfo(); NETVersionInfo highestInstalledNETVersion = new NETVersionInfo() { InstalledVersion = "" }; RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); rv.RawClrVersion = Environment.Version.ToString(); const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\"; // Opens the registry key for the .NET Framework entry. using (var ndpKey = baseKey.OpenSubKey(subkey)) { foreach (var versionKeyName in ndpKey.GetSubKeyNames()) { if (versionKeyName.StartsWith("v")) { //rv.NETVersionsInstalled.Add(versionKeyName.Substring(1)); using (RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName)) { // Get the .NET Framework version value. var name = (string)versionKey.GetValue("Version", ""); // Get the service pack (SP) number. var sp = versionKey.GetValue("SP", "").ToString(); var releaseVersion = versionKey.GetValue("Release"); int releaseKey = releaseVersion as int? ?? 0; // Get the installation flag, or an empty string if there is none. var install = versionKey.GetValue("Install", "").ToString(); if (string.IsNullOrEmpty(install)) // No install info; it must be in a child subkey. { //Console.WriteLine($"{versionKeyName} {name}"); } else if (install == "1") { NETVersionInfo rec = new NETVersionInfo() { Version = versionKeyName, InstalledVersion = name, ServicePack = sp, ReleaseKey = releaseKey }; if (highestInstalledNETVersion < rec) { highestInstalledNETVersion = rec; } if (!rv.NETVersionsInstalled.Contains(rec)) { rv.NETVersionsInstalled.Add(rec); } } if (!string.IsNullOrEmpty(name)) { continue; } foreach (var subKeyName in versionKey.GetSubKeyNames()) { using (RegistryKey subKey = versionKey.OpenSubKey(subKeyName)) { name = (string)subKey.GetValue("Version", ""); if (!string.IsNullOrEmpty(name)) { sp = subKey.GetValue("SP", "").ToString(); releaseVersion = subKey.GetValue("Release"); releaseKey = releaseVersion as int? ?? 0; string v = versionKeyName; if (releaseKey > 0) { v = CheckFor45PlusVersion(releaseKey); } install = subKey.GetValue("Install", "").ToString(); if (install == "1") { if (versionKeyName == "v4") { rv.NET4TypesInstalled.Add(subKeyName); if (subKeyName == "Client") { rv.IsNET4ClientInstalled = true; } if (subKeyName == "Full") { rv.IsNET4FullInstalled = true; } } NETVersionInfo rec = new NETVersionInfo() { Version = v, Type = subKeyName, InstalledVersion = name, ServicePack = sp, ReleaseKey = releaseKey }; if (highestInstalledNETVersion < rec) { highestInstalledNETVersion = rec; } if (!rv.NETVersionsInstalled.Contains(rec)) { rv.NETVersionsInstalled.Add(rec); } } } } } } } } } if (String.IsNullOrEmpty(highestInstalledNETVersion.InstalledVersion)) { rv.Version = null; } else { rv.Version = highestInstalledNETVersion; } return(rv); }
static void Main(string[] args) { DA.WWWingsContext.ConnectionString = Program.CONNSTRING; CUI.Print("Entity Framework Core Samples", ConsoleColor.Blue, ConsoleColor.White); CUI.Print("(C) Dr. Holger Schwichtenberg 2016-2018, www.EFCore.net", ConsoleColor.Blue, ConsoleColor.White); var assembly = Assembly.GetAssembly(typeof(Microsoft.EntityFrameworkCore.DbContext)); var informalVersion = assembly.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).OfType <AssemblyInformationalVersionAttribute>().FirstOrDefault()?.InformationalVersion; CUI.Print($"Application compiled for: {CLRInfo.GetCLRVersionCompiledFor()}"); CUI.Print($"Application running on: {CLRInfo.GetCLRVersionRunningOn()}"); CUI.Print("EF Core version: " + assembly.GetName().Version.ToString() + "/" + informalVersion); ShadowState.ColumnsAddedAfterCompilation(); // Test connection to database and generate data if necessary if (DemoUtil.TestConnection() != "") { End(); } //EFC_WWWingsV1_Reverse.DataGenerator.Run(true); DataGenerator.Run(false); //FirstLevelCache.ClearCache(); // Connect to EFProfiler HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize(); CUI.Print("-------------------- START ------------- ", ConsoleColor.Blue, ConsoleColor.White); //QueriesDynamic.ExpressionTreeTwoConditions(); End(); #region Samples from the book" // ------------ Read data mit LINQ SimpleQueries.LINQ_List(); SimpleQueries.LINQ_QueryWithPaging(); SimpleQueries.LINQ_RepositoryPattern(); SimpleQueries.Projection_Read(); SimpleQueries.LINQ_SingleOrDefault(); SimpleQueries.LINQ_Find(); Queries.GroupBy(); Queries.LINQ_RAMQueries(); // ------------ Object relationships and loading strategies LoadingStrategies.Demo_LazyLoading(); // 1 SELECT, no Details :-( LoadingStrategies.Demo_EagerLoading(); // 4 SELECT LoadingStrategies.Demo_ExplizitLoading(); // many SELECT :-( LoadingStrategies.Demo_PreLoading(); // 5 SELECT LoadingStrategies.Demo_PreLoadingPilotsCaching(); // ------------ CUD Conflicts.ChangeFlightOneProperty(); Updates.ChangeFlightAndPilot(); Updates.AddFlight(); Updates.RemoveFlight(); Updates.RemoveFlightWithKey(); RelationChange.Demo_CreateRelatedObjects(); Transactions.ExplicitTransactionTwoContextInstances(); ChangeTrackerDemos.ChangeTracking_OneObject(); ChangeTrackerDemos.ChangeTracking_MultipleObjects(); ContradictoryRelationships.Demo_ContradictoryRelationships(); // ----------------- Data conflicts Conflicts.ConflictWhileChangingFlight(); ReadLock.UpdateWithReadLock(); // ----------------- async Updates.Demo_ForeachProblem(); AsyncOperations.ReadDataAsync(); AsyncOperations.ChangeDataAsync(); AsyncOperations.AsyncForeach(); AsyncOperations.LINQ_MiscAsync(); // ---------- Dynamic LINQ QueriesDynamic.LINQComposition(); QueriesDynamic.ExpressionTreeTwoConditions(); QueriesDynamic.ExpressionTreeNumerousConditions(); QueriesDynamic.DynamicLINQNumerousCondition(); // ----------------- SQL, SP, TVF SQLSPTVF.Demo_SQLDirect1(); SQLSPTVF.Demo_SQLDirect2(); SQLSPTVF.Demo_SQLDirect3(); SQLSPTVF.Demo_SQLDirect4(); SQLSPTVF.Demo_SQLDirectAndLINQComposition(); SQLSPTVF.Demo_SP(); SQLSPTVF.Demo_TVF(); SQLSPTVF.Demo_SQLDirect_Projection(); // ------------------- Performance / Tracking TrackingModes.TrackingMode_AsNoTracking(); TrackingModes.TrackingMode_NoTracking_Attach(); TrackingModes.TrackingMode_QueryTrackingBehavior(); TrackingModes.TrackingMode_Performance(); // ------------------- Tips EFC2_GlobalFilters.GlobalFilter(); ShadowState.ReadAndChangeShadowProperty(); CalculatedColumns.ComputedColumnWithFormula(); CalculatedColumns.DefaultValues(); // ------------------- Bulk operations BulkOperations.BulkDelete_Prepare(); BulkOperations.BulkDeleteEFCAPIwithoutBatching(); BulkOperations.BulkDelete_Prepare(); BulkOperations.BulkDeleteEFCAPIwithBatching(); BulkOperations.BulkDelete_Prepare(); BulkOperations.BulkUpdateEFPlus(); // ------------------- Performance / Caching Caching.Demo_MemoryCache(); Caching.Demo_CacheManager(); Caching.Demo_SecondLevelCache(); // ------------------- Performance / Beziehungszuweisung ForeignKeyAssociations.ChangePilotUsingFK(); ForeignKeyAssociations.ChangePilotUsingObjectAssignment(); ForeignKeyAssociations.ChangePilotUsingFKShadowProperty(); // ------------------- OOM / Automapper ReflectionMapping.Run(); AutoMapper_HelloWorld.RunSimpleDemo(); AutoMapperBasics.Demo_SingleObject(); AutoMapperBasics.Demo_ListMapping(); AutoMapperAdvanced.Inheritance(); AutoMapperAdvanced.GenericDemo(); AutoMapperAdvanced.GenericHomogeneousList(); AutoMapperAdvanced.BeforeAfterDemo(); AutoMapperAdvanced.GenericHeterogeneousList(); #endregion End(); #region ++++++++++++++++++ Additional samples, not yet in the book Timestamps.ShowUpdatedTimeStamp(); CachingRelFixup.Demo_RelFixup(); CachingRelFixup.Demo_FirstLevelCaching(); ContextEvents.EreignisFolge(); Threading.EF_MT(); Queries.Demo_Projection_OneFlight(); Queries.GeneratedSQL(); RelationshipFixup.Demo1_PilotBleibtImRAM(); RelationshipFixup.Demo2_RueckwartigeBeziehung(); DeleteCascading.EinfachesUpdate(); FieldMapping.UsePrivateField(); Updates.EF_ChangeTracking(); Transactions.TransactionScopeDemo(); Graph.TrackGraph(); RelationChange.Demo_FlightAddAndRead(); Queries.GroupBy_SQL_NonEntityType(); FirstLevelCache.LocalClear(); Updates.AddBatch(); Updates.Batching_Change10Flights(); ChangeTrackerDemos.EF_ChangeTrackerAuswerten(); LoadingStrategies.Demo_PreLoading1(); LoadingStrategies.Demo_EagerLoadingPilotDetails(); LoadingStrategies.Demo_ExplizitLoadingCustom(); #endregion }
public static string GetCommonStatistics(Dictionary <string, string> extraInfos) { StringBuilder sb = new StringBuilder(); CLRInfo inf = GetCLRInfo(); sb.AppendFormat("COMMON STATISTICS:\r\n"); sb.AppendFormat("Current version: {0}\r\n", ClientVersion.CurrentVersion); sb.AppendFormat("Current build: {0}\r\n", ClientVersion.CurrentBuild); sb.AppendFormat("Current path: {0}\r\n", Environment.CurrentDirectory); sb.AppendFormat("System path: {0}\r\n", Environment.SystemDirectory); sb.AppendFormat("Command line: {0}\r\n", Environment.CommandLine); sb.AppendFormat("OS version: {0}\r\n", Environment.OSVersion); sb.AppendFormat("CPU count: {0}\r\n", Environment.ProcessorCount); sb.AppendFormat("Machine name: {0}\r\n", Environment.MachineName); sb.AppendFormat("CLR version: {0} ({1})\r\n", inf.Version, inf.RawClrVersion); sb.AppendFormat("Working set: {0}Mb\r\n", Environment.WorkingSet / 1024 / 1024); sb.AppendFormat("Application data: {0}\r\n", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); sb.AppendFormat("Temp path: {0}\r\n", Path.GetTempPath()); sb.AppendFormat("CurrentCulture: {0}\r\n", CultureInfo.CurrentCulture); sb.AppendFormat("CurrentUICulture: {0}\r\n", CultureInfo.CurrentUICulture); sb.AppendFormat("CurrentUICulture.Name: {0}\r\n", CultureInfo.CurrentUICulture.Name); sb.AppendFormat("InstalledUICulture: {0}\r\n", CultureInfo.InstalledUICulture); sb.AppendFormat("InvariantCulture: {0}\r\n", CultureInfo.InvariantCulture); sb.AppendFormat("UTC offset: {0}\r\n", (DateTime.Now - DateTime.UtcNow).TotalHours); sb.AppendFormat(".NET4 client installed {0}\r\n", inf.IsNET4ClientInstalled); sb.AppendFormat(".NET4 full installed {0}\r\n", inf.IsNET4FullInstalled); sb.AppendFormat(".NET CLR versions installed:\r\n"); foreach (NETVersionInfo v in inf.NETVersionsInstalled) { sb.AppendFormat("- .NET version: {0}\r\n", v); } if (ApplicationDeployment.IsNetworkDeployed) { sb.AppendFormat("Application is network deployed:\r\n"); sb.AppendFormat(" - ActivationUri {0}\r\n", ApplicationDeployment.CurrentDeployment.ActivationUri); sb.AppendFormat(" - CurrentVersion {0}\r\n", ApplicationDeployment.CurrentDeployment.CurrentVersion); sb.AppendFormat(" - DataDirectory {0}\r\n", ApplicationDeployment.CurrentDeployment.DataDirectory); sb.AppendFormat(" - IsFirstRun {0}\r\n", ApplicationDeployment.CurrentDeployment.IsFirstRun); sb.AppendFormat(" - TimeOfLastUpdateCheck {0}\r\n", ApplicationDeployment.CurrentDeployment.TimeOfLastUpdateCheck); sb.AppendFormat(" - UpdatedApplicationFullName {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdatedApplicationFullName); sb.AppendFormat(" - UpdatedVersion {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdatedVersion); sb.AppendFormat(" - UpdateLocation {0}\r\n", ApplicationDeployment.CurrentDeployment.UpdateLocation); } else { sb.AppendFormat("Application is not network deployed.\r\n"); } if (extraInfos.Count > 0) { sb.AppendFormat("EXTRA CONFIG INFO:\r\n"); foreach (var v in extraInfos) { string k = $"{v.Key}:"; string d = v.Value; if (!d.Contains("\n")) { sb.Append($"{k.PadRight(33, ' ')} {v.Value}\r\n"); } else { sb.Append($"{k}:\r\n"); var a = d.Split("\n".ToCharArray()); foreach (string l in a) { sb.Append($" {l}\r\n"); } } } } return(sb.ToString()); }