use a config for table designer trigger behavior (#2070)

This commit is contained in:
Hai Cao
2023-05-18 10:09:24 -07:00
committed by GitHub
parent cb6dfeb68d
commit c6e53ea753
2 changed files with 8 additions and 1 deletions

View File

@@ -14,5 +14,10 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlContext
/// Whether the database model should be preloaded to make the initial launch quicker. /// Whether the database model should be preloaded to make the initial launch quicker.
/// </summary> /// </summary>
public bool PreloadDatabaseModel { get; set; } = false; public bool PreloadDatabaseModel { get; set; } = false;
/// <summary>
/// Whether the table designer should allow disabling and re-enabling DDL triggers during publish.
/// </summary>
public bool AllowDisableAndReenableDdlTriggers {get; set; } = true;
} }
} }

View File

@@ -74,6 +74,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner
internal Task UpdateSettings(SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext) internal Task UpdateSettings(SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext)
{ {
Settings.PreloadDatabaseModel = newSettings.MssqlTools.TableDesigner != null ? newSettings.MssqlTools.TableDesigner.PreloadDatabaseModel : false; Settings.PreloadDatabaseModel = newSettings.MssqlTools.TableDesigner != null ? newSettings.MssqlTools.TableDesigner.PreloadDatabaseModel : false;
Settings.AllowDisableAndReenableDdlTriggers = newSettings.MssqlTools.TableDesigner != null ? newSettings.MssqlTools.TableDesigner.AllowDisableAndReenableDdlTriggers : true;
return Task.FromResult(0); return Task.FromResult(0);
} }
@@ -1801,11 +1802,12 @@ namespace Microsoft.SqlTools.ServiceLayer.TableDesigner
connectionStringBuilder.InitialCatalog = tableInfo.Database; connectionStringBuilder.InitialCatalog = tableInfo.Database;
connectionStringBuilder.ApplicationName = ConnectionService.GetApplicationNameWithFeature(connectionStringBuilder.ApplicationName, TableDesignerService.TableDesignerApplicationNameSuffix); connectionStringBuilder.ApplicationName = ConnectionService.GetApplicationNameWithFeature(connectionStringBuilder.ApplicationName, TableDesignerService.TableDesignerApplicationNameSuffix);
var connectionString = connectionStringBuilder.ToString(); var connectionString = connectionStringBuilder.ToString();
var tableDesignerOptions = new Dac.TableDesignerOptions(disableAndReenableDdlTriggers: Settings.AllowDisableAndReenableDdlTriggers);
// Set Access Token only when authentication mode is not specified. // Set Access Token only when authentication mode is not specified.
var accessToken = connectionStringBuilder.Authentication == SqlAuthenticationMethod.NotSpecified var accessToken = connectionStringBuilder.Authentication == SqlAuthenticationMethod.NotSpecified
? tableInfo.AccessToken : null; ? tableInfo.AccessToken : null;
tableDesigner = new Dac.TableDesigner(connectionString, accessToken, tableInfo.Schema, tableInfo.Name, tableInfo.IsNewTable); tableDesigner = new Dac.TableDesigner(connectionString, accessToken, tableInfo.Schema, tableInfo.Name, tableInfo.IsNewTable, tableDesignerOptions);
} }
else else
{ {