示例#1
0
 /// <summary>
 ///     复制值
 /// </summary>
 /// <param name="source">复制的源字段</param>
 /// <param name="noChilds">是否复制子级(默认为是)</param>
 public void CopyValue(EntityConfig source, bool noChilds = false)
 {
     Caption       = source.Caption + "(复制)";
     Description   = source.Description;
     Name          = source.Name + "_copy";
     DataVersion   = source.DataVersion;
     DbIndex       = source.DbIndex;
     IsInternal    = source.IsInternal;
     IsClass       = source.IsClass;
     ReadTableName = source.ReadTableName;
     SaveTableName = source.SaveTableName;
     Classify      = source.Classify;
     CppName       = source.CppName;
     TreeUi        = source.TreeUi;
     Tag           = source.Tag + "," + source.Name;
     if (noChilds)
     {
         return;
     }
     foreach (var field in source.Properties)
     {
         var nf = new PropertyConfig();
         nf.CopyFrom(field);
         if (field.IsPrimaryKey)
         {
             nf.IsPrimaryKey = true;
         }
         nf.Tag = $"{source.Tag},{source.Name},{field.CppType},{field.Name}";
         Properties.Add(nf);
     }
 }
示例#2
0
        public void SplitTable()
        {
            if (Context.SelectEntity == null || Context.SelectColumns == null || Context.SelectColumns.Count == 0)
            {
                return;
            }
            var oldTable = Context.SelectEntity;
            var newTable = new EntityConfig();

            newTable.CopyValue(oldTable, true);
            if (!CommandIoc.NewConfigCommand(newTable))
            {
                return;
            }
            if (oldTable.PrimaryColumn != null)
            {
                var kc = new PropertyConfig();
                kc.CopyFrom(oldTable.PrimaryColumn);
                newTable.Properties.Add(kc);
            }
            foreach (var col in Context.SelectColumns.OfType <PropertyConfig>().ToArray())
            {
                oldTable.Properties.Remove(col);
                newTable.Properties.Add(col);
            }
            Context.Entities.Add(newTable);
            Model.Tree.SetSelect(newTable);
            Context.SelectColumns = null;
        }
        public void PateFields(bool yes, EntityConfig source, EntityConfig Entity, List <PropertyConfig> columns)
        {
            foreach (var copyColumn in columns)
            {
                PropertyConfig newColumn;
                if (copyColumn.IsPrimaryKey && copyColumn.Name.ToLower() == "id")
                {
                    string name = copyColumn.Parent.SaveTableName ?? copyColumn.Parent.ReadTableName;
                    newColumn = Entity.Properties.FirstOrDefault(
                        p => p.LinkTable == name && p.IsExtendKey);
                }
                else if (copyColumn.IsCaption)
                {
                    string name = copyColumn.Parent.SaveTableName ?? copyColumn.Parent.ReadTableName;
                    newColumn = Entity.Properties.FirstOrDefault(
                        p => p.LinkTable == name && p.IsLinkCaption);
                }
                else
                {
                    newColumn = Entity.Properties.FirstOrDefault(p =>
                                                                 string.Equals(p.Name, copyColumn.Name, StringComparison.OrdinalIgnoreCase) ||
                                                                 string.Equals(p.Alias, copyColumn.Name, StringComparison.OrdinalIgnoreCase) ||
                                                                 string.Equals(p.Name, copyColumn.Alias, StringComparison.OrdinalIgnoreCase));
                }

                if (newColumn == null)
                {
                    newColumn = new PropertyConfig();
                    newColumn.CopyFrom(copyColumn);

                    if (copyColumn.IsPrimaryKey && copyColumn.Name.ToLower() == "id")
                    {
                        newColumn.Name       = copyColumn.Parent.Name + "Id";
                        newColumn.Caption    = copyColumn.Parent.Caption + "外键";
                        newColumn.ColumnName = GlobalConfig.SplitWords(newColumn.Name).Select(p => p.ToLower()).LinkToString("_");
                    }
                    else if (copyColumn.IsCaption)
                    {
                        newColumn.Name       = copyColumn.Parent.Name;
                        newColumn.Caption    = copyColumn.Parent.Caption;
                        newColumn.ColumnName = GlobalConfig.SplitWords(newColumn.Name).Select(p => p.ToLower()).LinkToString("_");
                    }
                    Entity.Add(newColumn);
                }
                newColumn.Parent = Entity;
                if (yes)
                {
                    newColumn.LinkTable = string.IsNullOrEmpty(copyColumn.LinkTable)
                        ? source.SaveTableName
                        : copyColumn.LinkTable;
                    newColumn.LinkField = string.IsNullOrEmpty(copyColumn.LinkField)
                        ? copyColumn.Name
                        : copyColumn.LinkField;
                    if (copyColumn.IsLinkKey || copyColumn.IsPrimaryKey)
                    {
                        newColumn.IsLinkKey = true;
                    }
                    else
                    {
                        newColumn.IsLinkCaption = copyColumn.IsCaption || copyColumn.IsLinkCaption;
                        newColumn.IsCompute     = copyColumn.IsCompute;
                    }
                    newColumn.IsCompute = !newColumn.IsLinkKey;
                }
                else
                {
                    newColumn.IsLinkField   = false;
                    newColumn.LinkTable     = null;
                    newColumn.IsLinkKey     = false;
                    newColumn.IsLinkCaption = false;
                    newColumn.IsUserId      = false;
                    newColumn.LinkField     = null;
                    newColumn.IsCompute     = false;
                }
                newColumn.IsPrimaryKey = false;
                newColumn.IsCaption    = false;
            }
            Entity.IsModify = true;
        }