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