Пример #1
0
        protected override void DoExecute(object data)
        {
            ObjectClass baseclass = Type;

            var children = new List <ObjectClass>();

            if (baseclass.IsAbstract == false)
            {
                children.Add(baseclass);
            }
            baseclass.CollectChildClasses(FrozenContext, children, false);

            if (children.Count == 1)
            {
                CreateItem(Type);
            }
            else
            {
                var lstMdl = ViewModelFactory.CreateViewModel <DataObjectSelectionTaskViewModel.Factory>().Invoke(
                    DataContext, this,
                    typeof(ObjectClass).GetObjectClass(FrozenContext),
                    () => children.AsQueryable(),
                    (chosen) =>
                {
                    if (chosen != null)
                    {
                        CreateItem((ObjectClass)chosen.First().Object);
                    }
                }, null);
                lstMdl.ListViewModel.ShowCommands = false;

                ViewModelFactory.ShowModel(lstMdl, true);
            }
        }
Пример #2
0
        /// <summary>
        /// creates a new target and references it
        /// </summary>
        public void CreateNewItemAndSetValue()
        {
            ObjectClass baseclass = ObjectReferenceModel.ReferencedClass;

            var children = new List <ObjectClass>();

            if (baseclass.IsAbstract == false)
            {
                children.Add(baseclass);
            }
            baseclass.CollectChildClasses(FrozenContext, children, false);

            if (children.Count == 1)
            {
                var targetType = children.Single().GetDescribedInterfaceType();
                var item       = this.DataContext.Create(targetType);
                var model      = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), item);

                Value = model;
                ViewModelFactory.ShowModel(model, true);
            }
            else
            {
                var lstMdl = ViewModelFactory.CreateViewModel <DataObjectSelectionTaskViewModel.Factory>().Invoke(
                    DataContext, this,
                    typeof(ObjectClass).GetObjectClass(FrozenContext),
                    () => children.AsQueryable(),
                    (chosen) =>
                {
                    if (chosen != null)
                    {
                        var targetType = ((ObjectClass)chosen.First().Object).GetDescribedInterfaceType();
                        var item       = this.DataContext.Create(targetType);
                        var model      = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), item);

                        Value = model;
                        ViewModelFactory.ShowModel(model, true);
                    }
                }, null);
                lstMdl.ListViewModel.ShowCommands = false;

                ViewModelFactory.ShowDialog(lstMdl);
            }
        }
Пример #3
0
        /// <summary>
        /// Creates a new Item suitable for adding to the list. This may prompt
        /// the user to choose a type of item to add or enter an initial value.
        /// </summary>
        public void CreateNewItem()
        {
            ObjectClass baseclass = ReferencedClass;

            var children = new List <ObjectClass>();

            if (baseclass.IsAbstract == false)
            {
                children.Add(baseclass);
            }
            baseclass.CollectChildClasses(FrozenContext, children, false);

            if (children.Count == 1)
            {
                CreateItemAndActivate(baseclass);
            }
            else
            {
                var lstMdl = ViewModelFactory.CreateViewModel <DataObjectSelectionTaskViewModel.Factory>().Invoke(
                    DataContext,
                    this,
                    typeof(ObjectClass).GetObjectClass(FrozenContext),
                    () => children.AsQueryable(),
                    (chosen) =>
                {
                    if (chosen != null)
                    {
                        var targetClass = ((ObjectClass)chosen.First().Object);
                        CreateItemAndActivate(targetClass);
                    }
                },
                    null);
                lstMdl.ListViewModel.ShowCommands = false;

                ViewModelFactory.ShowDialog(lstMdl);
            }
        }
Пример #4
0
        private void CheckExtraColumns(ObjectClass objClass)
        {
            if (objClass.GetTableMapping() == TableMapping.TPH && objClass.BaseObjectClass != null) return; // Check only base TPH classes

            Log.Debug("Extra Columns: ");
            List<string> columns = new List<string>();
            List<ObjectClass> classes = new List<ObjectClass>(new[] { objClass });

            if (objClass.GetTableMapping() == TableMapping.TPH)
                objClass.CollectChildClasses(classes, true);

            foreach (var cls in classes)
            {
                GetExistingColumnNames(cls, cls.Properties, String.Empty, columns);
                GetRelationColumnNames(cls, columns);
            }

            foreach (string propName in db.GetTableColumnNames(objClass.GetTableRef(db)))
            {
                if (propName == "ID" || propName == TableMapper.DiscriminatorColumnName)
                    continue;
                if (!columns.Contains(propName))
                {
                    Log.WarnFormat("Column '[{0}].[{1}].[{2}]' found in database but no Property was defined",
                        objClass.Module.IfNotNull(o => o.SchemaName),
                        objClass.TableName,
                        propName);
                }
            }
        }