Exemple #1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                SqlOutput.Text    = "Generating Script...";
                CSharpOutput.Text = "Generating Script...";

                _CodeGenerator = new CodeGenerator(ConnectionString);

                await _CodeGenerator.GenerateQuerySchema(Query);

                var sqlResult = await _CodeGenerator.GetSqlScript();

                var cSharpResult = await _CodeGenerator.GetPocoScript();

                SqlOutput.Text    = sqlResult;
                CSharpOutput.Text = cSharpResult;

                if (ScriptResults == null)
                {
                    ScriptResults = new ScriptResultList();
                }

                var          lastResult = ScriptResults.FirstOrDefault(r => r.InputScript == Query);
                ScriptResult newResult  = new ScriptResult();

                // If there already is a matching result, update the run time
                if (lastResult != null)
                {
                    lastResult.ScriptTime = DateTime.Now;
                }
                else
                {
                    newResult.Server       = Server;
                    newResult.InputScript  = Query;
                    newResult.OutputCSharp = cSharpResult;
                    newResult.OutputSql    = sqlResult;
                    newResult.ScriptTime   = DateTime.Now;

                    ScriptResults.CullList(newResult);

                    ScriptResults.Add(newResult);
                }

                PriorQueryCombo.ItemsSource = ScriptResults.OrderByDescending(r => r.ScriptTime);
                PriorQueryCombo.Text        = (lastResult == null) ? newResult.ToString() : lastResult.ToString();

                SqlGenerator.Properties.Settings.Default.Save();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                SqlOutput.Text    = string.Format("/*{0}*/", ex.Message);
                CSharpOutput.Text = string.Format("/*{0}*/", ex.Message);
            }
        }
        public void ChainedPropertiesTest()
        {
            using (var application = XpoInMemoryXafApplication.CreateInstance())
                using (var objectSpace = application.CreateObjectSpace())
                {
                    for (int i = 1; i <= 10000; i++)
                    {
                        var objectWithReference = objectSpace.CreateObject <TestClassWithReference>();
                        var objectWithName      = objectSpace.CreateObject <TestClassWithName>();
                        objectWithName.Name             = $"Name {i}";
                        objectWithReference.NamedObject = objectWithName;
                        objectWithReference.Title       = $"Reference to {i}";
                    }
                    objectSpace.CommitChanges();

                    var list = new ScriptResultList(objectSpace.GetObjectsQuery <TestClassWithReference>(), application.TypesInfo);

                    PropertyDescriptorCollection dataListProperties = list.GetItemProperties(null);
                    var complexProperty = dataListProperties.Find(nameof(TestClassWithReference.NamedObject), false);
                    Assert.NotNull(complexProperty);
                    var nestedProperties = list.GetItemProperties(new[] { complexProperty });
                    Assert.Equal(2, nestedProperties.Count);
                }
        }