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); } }
/// <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); } }
/// <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); } }
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); } } }