private void Tables_CollectionChanging(object sender, CollectionChangeEventArgs e) { switch (e.Action) { case CollectionChangeAction.Add: { if (e.Element is InternalTableBase dataTable) { //if (dataTable.Parent != null) //{ // var parentTable = dataTable.Parent; // var relationName = InternalSetBase.GenerateRelationName(parentTable.LocalName, dataTable.LocalName, parentTable.Namespace); // this.Relations.Add(relationName, parentTable.RelationColumn, dataTable.RelationColumn); //} } } break; case CollectionChangeAction.Remove: { if (e.Element is InternalTableBase dataTable) { if (dataTable.Parent != null) { var parentTable = dataTable.Parent; var relationName = InternalSetBase.GenerateRelationName(parentTable.LocalName, dataTable.LocalName, parentTable.Namespace); dataTable.Constraints.Remove(relationName); this.Relations.Remove(relationName); } } } break; } }
public static void RemoveRelation(InternalSetBase dataSet, InternalTableBase parent, InternalTableBase table) { var relationName = InternalSetBase.GenerateRelationName(parent.LocalName, table.LocalName, parent.Namespace); if (dataSet != null) { dataSet.Relations.Remove(relationName); } }
public static void AddRelation(InternalSetBase dataSet, InternalTableBase parent, InternalTableBase table) { var relationName = InternalSetBase.GenerateRelationName(parent.LocalName, table.LocalName, parent.Namespace); if (dataSet != null) { dataSet.Relations.Add(relationName, parent.ColumnRelation, table.ParentRelation); } }
public CremaDataRow[] GetChildRows(CremaDataTable childTable) { if (childTable.Parent != this.Table) { return(null); } var relationName = InternalSetBase.GenerateRelationName(this.Table.TableName, childTable.TableName, this.Table.Namespace); return(this.row.GetChildRows(relationName).Select(item => (item as InternalDataRow).Target).ToArray()); }
public void RefreshRelation(InternalTableBase table) { for (var i = 0; i < this.Relations.Count; i++) { var item = this.Relations[i]; if (item.ParentTable == table || item.ChildTable == table) { if (item.ParentTable is InternalTableBase parentTable && item.ChildTable is InternalTableBase childTable) { item.RelationName = InternalSetBase.GenerateRelationName(parentTable.LocalName, childTable.LocalName, parentTable.Namespace); } } } }
public static void ValidateSetLocalName(InternalSetBase dataSet, string localName) { if (dataSet == null && string.IsNullOrEmpty(localName) == false && CremaDataSet.VerifyName(localName) == false) { throw new ArgumentException(Resources.Exception_InvalidName); } if (dataSet != null && localName == null) { throw new ArgumentNullException(nameof(localName)); } if (dataSet != null && CremaDataSet.VerifyName(localName) == false) { throw new ArgumentException(Resources.Exception_InvalidName); } //if (dataTable != null && dataTable.Childs.Where(item => item.TableName == columnName).Any() == true) // throw new ArgumentException($"{columnName} 은(는) 자식 테이블의 이름으로 사용되고 있으므로 사용할 수 없습니다."); //if (dataTable != null && dataTable.TemplateNamespace != string.Empty) // throw new ArgumentException("상속받은 테이블의 열의 이름은 변경할 수 없습니다."); }
private void Tables_CollectionChanged(object sender, CollectionChangeEventArgs e) { switch (e.Action) { case CollectionChangeAction.Add: { if (e.Element is InternalTableBase dataTable) { if (dataTable.Parent != null) { var parentTable = dataTable.Parent; var relationName = InternalSetBase.GenerateRelationName(parentTable.LocalName, dataTable.LocalName, parentTable.Namespace); this.Relations.Add(relationName, parentTable.ColumnRelation, dataTable.ParentRelation); } dataTable.PropertyChanged += DataTable_PropertyChanged; } } break; case CollectionChangeAction.Remove: { if (e.Element is InternalTableBase dataTable) { dataTable.PropertyChanged -= DataTable_PropertyChanged; if (dataTable.TemplatedParent != null) { dataTable.InternalTemplatedParent = null; } else { foreach (var item in dataTable.DerivedItems.ToArray()) { item.InternalTemplatedParent = null; } } } } break; } }
public CremaDataRow[] GetChildRows(string childTableName) { var relationName = InternalSetBase.GenerateRelationName(this.Table.TableName, childTableName, this.Table.Namespace); return(this.row.GetChildRows(relationName).Select(item => (item as InternalDataRow).Target).ToArray()); }