From 82688202308346d0fadfcae616b23b85fafa9b80 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Fri, 8 Apr 2022 19:12:03 -0700 Subject: [PATCH] revert to previous behavior (#1458) --- .../TableDesigner/TableDesignerValidator.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs index c46a827e..09d89091 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs @@ -182,17 +182,21 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner { var errors = new List(); var table = designer.TableViewModel; - Dictionary currentSchemaConstraints = designer.AllConstraintsNamesCounts; + var existingNames = new HashSet(); for (int i = 0; i < table.ForeignKeys.Items.Count; i++) { var foreignKey = table.ForeignKeys.Items[i]; - if (currentSchemaConstraints.ContainsKey(foreignKey.Name) && currentSchemaConstraints[foreignKey.Name] > 1) + if (existingNames.Contains(foreignKey.Name)) { errors.Add(new TableDesignerIssue() { Description = string.Format("The name '{0}' is already used by another constraint. Row number: {1}.", foreignKey.Name, i + 1), PropertyPath = new object[] { TablePropertyNames.ForeignKeys, i, ForeignKeyPropertyNames.Name } }); + } + else + { + existingNames.Add(foreignKey.Name); } } @@ -200,7 +204,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner for (int i = 0; i < table.CheckConstraints.Items.Count; i++) { var checkConstraint = table.CheckConstraints.Items[i]; - if (currentSchemaConstraints.ContainsKey(checkConstraint.Name) && currentSchemaConstraints[checkConstraint.Name] > 1) + if (existingNames.Contains(checkConstraint.Name)) { errors.Add(new TableDesignerIssue() { @@ -208,12 +212,16 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner PropertyPath = new object[] { TablePropertyNames.CheckConstraints, i, CheckConstraintPropertyNames.Name } }); } + else + { + existingNames.Add(checkConstraint.Name); + } } for (int i = 0; i < table.EdgeConstraints.Items.Count; i++) { var edgeConstraint = table.EdgeConstraints.Items[i]; - if (currentSchemaConstraints.ContainsKey(edgeConstraint.Name) && currentSchemaConstraints[edgeConstraint.Name] > 1) + if (existingNames.Contains(edgeConstraint.Name)) { errors.Add(new TableDesignerIssue() { @@ -221,6 +229,10 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner PropertyPath = new object[] { TablePropertyNames.EdgeConstraints, i, EdgeConstraintPropertyNames.Name } }); } + else + { + existingNames.Add(edgeConstraint.Name); + } } return errors; }