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);
        }
예제 #3
0
        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
        }
예제 #4
0
        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());
        }