public static Expression Build(DataAccessModel dataAccessModel, SqlQueryFormatterManager formatterManager, SqlDataTypeProvider sqlDataTypeProvider, SqlDialect sqlDialect, DataAccessModel model, DatabaseCreationOptions options, string tableNamePrefix, SqlDataDefinitionBuilderFlags flags) { var builder = new SqlDataDefinitionExpressionBuilder(dataAccessModel, formatterManager, sqlDialect, sqlDataTypeProvider, model, options, tableNamePrefix, flags); var retval = builder.Build(); return(retval); }
private SqlDataDefinitionExpressionBuilder(DataAccessModel dataAccessModel, SqlQueryFormatterManager formatterManager, SqlDialect sqlDialect, SqlDataTypeProvider sqlDataTypeProvider, DataAccessModel model, DatabaseCreationOptions options, string tableNamePrefix, SqlDataDefinitionBuilderFlags flags) { this.dataAccessModel = dataAccessModel; this.formatterManager = formatterManager; this.model = model; this.sqlDialect = sqlDialect; this.flags = flags; this.sqlDataTypeProvider = sqlDataTypeProvider; this.currentTableConstraints = new List <SqlConstraintExpression>(); }
private MySqlSqlDatabaseContext(DataAccessModel model, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, MySqlSqlDatabaseContextInfo contextInfo) : base(model, new MySqlSqlDialect(), sqlDataTypeProvider, sqlQueryFormatterManager, contextInfo.DatabaseName, contextInfo) { this.SqlMode = contextInfo.SqlMode; this.ServerName = contextInfo.ServerName; this.Username = contextInfo.UserName; this.Password = contextInfo.Password; this.ConnectionString = $"Server={this.ServerName}; Database={this.DatabaseName}; Uid={this.Username}; Pwd={this.Password}; Pooling={contextInfo.PoolConnections}; AutoEnlist=false; charset=utf8; Convert Zero Datetime={(contextInfo.ConvertZeroDateTime ? "true" : "false")}; Allow Zero Datetime={(contextInfo.AllowConvertZeroDateTime ? "true" : "false")};"; this.ServerConnectionString = Regex.Replace(this.ConnectionString, @"Database\s*\=[^;$]+[;$]", ""); this.SchemaManager = new MySqlSqlDatabaseSchemaManager(this); }
protected PostgresDotConnectSqlDatabaseContext(DataAccessModel model, SqlDialect sqlDialect, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, PostgresDotConnectSqlDatabaseContextInfo contextInfo) : base(model, sqlDialect, sqlDataTypeProvider, sqlQueryFormatterManager, contextInfo.DatabaseName, contextInfo) { if (!string.IsNullOrEmpty(contextInfo.ConnectionString)) { this.ConnectionString = contextInfo.ConnectionString; this.ServerConnectionString = Regex.Replace(this.ConnectionString, @"Database\s*\=[^;$]+[;$]", ""); } else { this.Host = contextInfo.ServerName; this.UserId = contextInfo.UserId; this.Password = contextInfo.Password; this.Port = contextInfo.Port; var connectionStringBuilder = new PgSqlConnectionStringBuilder { Host = contextInfo.ServerName, UserId = contextInfo.UserId, Password = contextInfo.Password, Port = contextInfo.Port, Pooling = contextInfo.Pooling, Enlist = false, Charset = "UTF8", Unicode = true, MaxPoolSize = contextInfo.MaxPoolSize, UnpreparedExecute = contextInfo.UnpreparedExecute }; if (contextInfo.ConnectionTimeout != null) { connectionStringBuilder.ConnectionTimeout = contextInfo.ConnectionTimeout.Value; } if (contextInfo.ConnectionCommandTimeout != null) { connectionStringBuilder.DefaultCommandTimeout = contextInfo.ConnectionCommandTimeout.Value; } this.ServerConnectionString = connectionStringBuilder.ConnectionString; connectionStringBuilder.Database = contextInfo.DatabaseName; this.ConnectionString = connectionStringBuilder.ConnectionString; } this.SchemaManager = new PostgresSqlDatabaseSchemaManager(this); }
protected SqliteSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager) : base(model, SqliteSqlDialect.Default, sqlDataTypeProvider, sqlQueryFormatterManager, Path.GetFileNameWithoutExtension(contextInfo.FileName), contextInfo) { this.FileName = contextInfo.FileName; this.IsSharedCacheConnection = IsSharedConnectionRegex.IsMatch(this.FileName); this.IsInMemoryConnection = IsMemoryConnectionRegex.IsMatch(this.FileName); }
public SqliteMonoSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager) : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager) { var connectionStringBuilder = new SqliteConnectionStringBuilder { Enlist = false, DataSource = contextInfo.FileName }; connectionStringBuilder.Add("foreign keys", 1); this.ConnectionString = connectionStringBuilder.ConnectionString; this.ServerConnectionString = this.ConnectionString; this.SchemaManager = new SqliteMonoSqlDatabaseSchemaManager(this); }
public SqliteOfficialsSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager) : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager) { Version version; var versionString = SQLiteConnection.SQLiteVersion; if (Version.TryParse(versionString, out version)) { if (version < new Version(3, 7, 7)) { bool isInMemory; var uri = contextInfo.FileName; Logger.WarnFormat("Sqlite version {0} does not support URIs", versionString); uri = ConvertNewStyleUriToOldStyleUri(uri, out isInMemory); this.IsInMemoryConnection = isInMemory; this.IsSharedCacheConnection = false; this.FileName = uri; } } else { Logger.WarnFormat("Cannot parse sqlite version: {0}", versionString); } var connectionStringBuilder = new SQLiteConnectionStringBuilder(); connectionStringBuilder.FullUri = this.FileName; connectionStringBuilder.Enlist = false; connectionStringBuilder.ForeignKeys = true; this.ConnectionString = connectionStringBuilder.ConnectionString; this.ServerConnectionString = this.ConnectionString; this.SchemaManager = new SqliteOfficialSqlDatabaseSchemaManager(this); }
private SqlServerSqlDatabaseContext(DataAccessModel model, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, SqlServerSqlDatabaseContextInfo contextInfo) : base(model, new SqlServerSqlDialect(contextInfo), sqlDataTypeProvider, sqlQueryFormatterManager, GetDatabaseName(contextInfo).Trim(), contextInfo) { this.ServerName = contextInfo.ServerName; this.Username = contextInfo.UserName; this.Password = contextInfo.Password; this.Instance = contextInfo.Instance; this.AllowSnapshotIsolation = contextInfo.AllowSnapshotIsolation; this.ReadCommittedSnapshot = contextInfo.ReadCommittedSnapshot; this.DeleteDatabaseDropsTablesOnly = contextInfo.DeleteDatabaseDropsTablesOnly; if (!string.IsNullOrEmpty(contextInfo.ConnectionString)) { var found = false; this.ConnectionString = contextInfo.ConnectionString; this.ConnectionString = EnlistRegex.Replace(this.ConnectionString, c => { found = true; return(IsRunningMono() ? "" : "Enlist=False"); }); if (!found && !IsRunningMono()) { this.ConnectionString += ";Enlist=False;"; } this.ServerConnectionString = DatabaseRegex.Replace(this.ConnectionString, "Initial Catalog=master;"); } else { var connectionStringBuilder = new SqlConnectionStringBuilder(); var dataSource = this.ServerName; if (!string.IsNullOrEmpty(this.Instance)) { dataSource += @"\" + this.Instance; } if (string.IsNullOrEmpty(this.Username) || contextInfo.TrustedConnection) { connectionStringBuilder.IntegratedSecurity = true; } else { connectionStringBuilder.UserID = this.Username; connectionStringBuilder.Password = this.Password; } connectionStringBuilder.MultipleActiveResultSets = contextInfo.MultipleActiveResultSets; if (!IsRunningMono()) { connectionStringBuilder.Enlist = false; } connectionStringBuilder.DataSource = dataSource; connectionStringBuilder.InitialCatalog = this.DatabaseName; connectionStringBuilder.Encrypt = contextInfo.Encrypt; connectionStringBuilder.Pooling = contextInfo.Pooling; // TODO: Remove when Mono switches to using reference source implementation if (!IsRunningMono()) { connectionStringBuilder.TypeSystemVersion = contextInfo.TypeSystemVersion ?? "SQL Server 2008"; } if (contextInfo.ConnectionTimeout != null) { connectionStringBuilder.ConnectTimeout = contextInfo.ConnectionTimeout.Value; } this.ConnectionString = connectionStringBuilder.ConnectionString; connectionStringBuilder.InitialCatalog = "master"; this.ServerConnectionString = connectionStringBuilder.ConnectionString; } this.SchemaManager = new SqlServerSqlDatabaseSchemaManager(this); }
protected SqliteSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager) : base(model, new SqliteSqlDialect(), sqlDataTypeProvider, sqlQueryFormatterManager, Path.GetFileNameWithoutExtension(contextInfo.FileName), contextInfo) { if (contextInfo.FileName == null && contextInfo.ConnectionString == null) { throw new ArgumentException($"Must supply {nameof(contextInfo.FileName)} or {nameof(contextInfo.ConnectionString)}", nameof(contextInfo)); } this.FileName = contextInfo.FileName; this.IsSharedCacheConnection = IsSharedConnectionRegex.IsMatch(this.FileName ?? contextInfo.ConnectionString); this.IsInMemoryConnection = IsMemoryConnectionRegex.IsMatch(this.FileName ?? contextInfo.ConnectionString); }
protected PostgresSqlDatabaseContext(DataAccessModel model, SqlDialect sqlDialect, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, PostgresSqlDatabaseContextInfo contextInfo) : base(model, sqlDialect, sqlDataTypeProvider, sqlQueryFormatterManager, contextInfo.DatabaseName, contextInfo) { this.SupportsPreparedTransactions = contextInfo.EnablePreparedTransactions; this.Host = contextInfo.ServerName; this.UserId = contextInfo.UserId; this.Password = contextInfo.Password; this.Port = contextInfo.Port; var connectionStringBuilder = new NpgsqlConnectionStringBuilder { Host = contextInfo.ServerName, Username = contextInfo.UserId, Password = contextInfo.Password, Port = contextInfo.Port, Pooling = contextInfo.Pooling, Enlist = false, MinPoolSize = contextInfo.MinPoolSize, MaxPoolSize = contextInfo.MaxPoolSize, KeepAlive = contextInfo.KeepAlive, ConnectionIdleLifetime = contextInfo.ConnectionIdleLifetime, ConvertInfinityDateTime = contextInfo.ConvertInfinityDateTime }; if (contextInfo.Timeout != null) { connectionStringBuilder.Timeout = contextInfo.Timeout.Value; } if (contextInfo.ConnectionTimeout.HasValue) { connectionStringBuilder.Timeout = contextInfo.ConnectionTimeout.Value; } if (contextInfo.ConnectionCommandTimeout.HasValue) { connectionStringBuilder.CommandTimeout = contextInfo.ConnectionCommandTimeout.Value; } connectionStringBuilder.Database = contextInfo.DatabaseName; this.ConnectionString = connectionStringBuilder.ToString(); connectionStringBuilder.Database = "postgres"; this.ServerConnectionString = connectionStringBuilder.ToString(); this.SchemaManager = new PostgresSqlDatabaseSchemaManager(this); }
protected PostgresSqlDatabaseContext(DataAccessModel model, SqlDialect sqlDialect, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, PostgresSqlDatabaseContextInfo contextInfo) : base(model, sqlDialect, sqlDataTypeProvider, sqlQueryFormatterManager, contextInfo.DatabaseName, contextInfo) { this.Host = contextInfo.ServerName; this.UserId = contextInfo.UserId; this.Password = contextInfo.Password; this.Port = contextInfo.Port; var connectionStringBuilder = new NpgsqlConnectionStringBuilder { Host = contextInfo.ServerName, Username = contextInfo.UserId, Password = contextInfo.Password, Port = contextInfo.Port, Pooling = contextInfo.Pooling, Enlist = false, BackendTimeouts = contextInfo.BackendTimeouts, MinPoolSize = contextInfo.MinPoolSize, MaxPoolSize = contextInfo.MaxPoolSize }; if (contextInfo.ConnectionTimeout.HasValue) { connectionStringBuilder.Timeout = contextInfo.ConnectionTimeout.Value; } if (contextInfo.ConnectionCommandTimeout.HasValue) { connectionStringBuilder.CommandTimeout = contextInfo.ConnectionCommandTimeout.Value; } connectionStringBuilder.Database = contextInfo.DatabaseName; this.ConnectionString = connectionStringBuilder.ToString(); connectionStringBuilder.Database = "postgres"; this.ServerConnectionString = connectionStringBuilder.ToString(); this.SchemaManager = new PostgresSqlDatabaseSchemaManager(this); }
private SqlServerSqlDatabaseContext(DataAccessModel model, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, SqlServerSqlDatabaseContextInfo contextInfo) : base(model, SqlServerSqlDialect.Default, sqlDataTypeProvider, sqlQueryFormatterManager, GetDatabaseName(contextInfo).Trim(), contextInfo) { this.ServerName = contextInfo.ServerName; this.Username = contextInfo.UserName; this.Password = contextInfo.Password; this.Instance = contextInfo.Instance; this.DeleteDatabaseDropsTablesOnly = contextInfo.DeleteDatabaseDropsTablesOnly; if (!string.IsNullOrEmpty(contextInfo.ConnectionString)) { var found = false; this.ConnectionString = contextInfo.ConnectionString; this.ConnectionString = Regex.Replace(this.ConnectionString, @"Enlist\s*=[^;$]+", c => { found = true; return("Enlist=False"); }); if (!found) { this.ConnectionString += ";Enlist=False;"; } this.ServerConnectionString = ConnectionStringDatabaseNameRegex.Replace(this.ConnectionString, "Initial Catalog=master;"); } else { var connectionStringBuilder = new SqlConnectionStringBuilder(); var dataSource = this.ServerName; if (!string.IsNullOrEmpty(this.Instance)) { dataSource += @"\" + this.Instance; } if (string.IsNullOrEmpty(this.Username) || contextInfo.TrustedConnection) { connectionStringBuilder.IntegratedSecurity = true; } else { connectionStringBuilder.UserID = this.Username; connectionStringBuilder.Password = this.Password; } connectionStringBuilder.Enlist = false; connectionStringBuilder.DataSource = dataSource; connectionStringBuilder.InitialCatalog = this.DatabaseName; connectionStringBuilder.Encrypt = contextInfo.Encrypt; if (contextInfo.ConnectionTimeout != null) { connectionStringBuilder.ConnectTimeout = contextInfo.ConnectionTimeout.Value; } this.ConnectionString = connectionStringBuilder.ConnectionString; connectionStringBuilder.InitialCatalog = "master"; this.ServerConnectionString = connectionStringBuilder.ConnectionString; } this.SchemaManager = new SqlServerSqlDatabaseSchemaManager(this); }
protected PostgresSqlDatabaseContext(DataAccessModel model, SqlDialect sqlDialect, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager, PostgresSqlDatabaseContextInfo contextInfo) : base(model, sqlDialect, sqlDataTypeProvider, sqlQueryFormatterManager, contextInfo.DatabaseName, contextInfo) { this.Host = contextInfo.ServerName; this.UserId = contextInfo.UserId; this.Password = contextInfo.Password; this.Port = contextInfo.Port; this.CommandTimeout = TimeSpan.FromSeconds(contextInfo.CommandTimeout); this.ConnectionString = String.Format("Host={0};User Id={1};Password={2};Database={3};Port={4};Pooling={5};MinPoolSize={6};MaxPoolSize={7};Enlist=false;Timeout={8};CommandTimeout={9}", contextInfo.ServerName, contextInfo.UserId, contextInfo.Password, contextInfo.DatabaseName, contextInfo.Port, contextInfo.Pooling, contextInfo.MinPoolSize, contextInfo.MaxPoolSize, contextInfo.ConnectionTimeout, contextInfo.CommandTimeout); this.ServerConnectionString = Regex.Replace(this.ConnectionString, @"Database\s*\=[^;]+[;$]", "Database=postgres;"); this.SchemaManager = new PostgresSharedSqlDatabaseSchemaManager(this); }