diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs index 284a16c7..cb1f09a6 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerValidator.cs @@ -27,7 +27,8 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner new ColumnsInPrimaryKeyCannotBeNullableRule(), new OnlyDurableMemoryOptimizedTableCanBeSystemVersionedRule(), new TemporalTableMustHavePrimaryKeyRule(), - new TableMustHaveAtLeastOneColumnRule() + new TableMustHaveAtLeastOneColumnRule(), + new MemoryOptimizedTableIdentityColumnRule() }; /// @@ -459,4 +460,29 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner return errors; } } + + public class MemoryOptimizedTableIdentityColumnRule : ITableDesignerValidationRule + { + public List Run(TableViewModel table) + { + var errors = new List(); + if (table.IsMemoryOptimized) + { + for (int i = 0; i < table.Columns.Items.Count; i++) + { + var column = table.Columns.Items[i]; + if (column.IsIdentity && (column.IdentitySeed != 1 || column.IdentityIncrement != 1)) + { + var propertyName = column.IdentitySeed != 1 ? TableColumnPropertyNames.IdentitySeed : TableColumnPropertyNames.IdentityIncrement; + errors.Add(new ValidationError() + { + Message = "The use of seed and increment values other than 1 is not supported with memory optimized tables.", + PropertyPath = new object[] { TablePropertyNames.Columns, i, propertyName } + }); + } + } + } + return errors; + } + } } \ No newline at end of file