private static async Task InitializeDbAsync(DbConnection connection) { if (await TableSchemaProvider.TableExistsAsync(connection, "Contacts")) { await TableSchemaProvider.DropTableAsync(connection, "Contacts"); } var sqlContacts = "create table Contacts(Id int primary key, FirstName varchar(255), LastName varchar(255), BirthDate smalldatetime)"; await TableSchemaProvider.ExecuteScriptAsync(connection, sqlContacts); var intCols = string.Join(", ", Enumerable.Range(1, 10).Select(x => $"I_COL_{x:D2} int")); var stringCols = string.Join(", ", Enumerable.Range(1, 10).Select(x => $"S_COL_{x:D2} varchar(255)")); var dateCols = string.Join(", ", Enumerable.Range(1, 10).Select(x => $"D_COL_{x:D2} smalldatetime")); var guidCols = string.Join(", ", Enumerable.Range(1, 10).Select(x => $"G_COL_{x:D2} uniqueidentifier")); if (await TableSchemaProvider.TableExistsAsync(connection, "DynamicData")) { await TableSchemaProvider.DropTableAsync(connection, "DynamicData"); } var sqlDynamicData = $"create table DynamicData(Id int primary key, {intCols}, {stringCols}, {dateCols}, {guidCols})"; await TableSchemaProvider.ExecuteScriptAsync(connection, sqlDynamicData); if (await TableSchemaProvider.TableExistsAsync(connection, "CsvData")) { await TableSchemaProvider.DropTableAsync(connection, "CsvData"); } var sqlCsvData = $"create table CsvData(Id int primary key, {intCols}, {stringCols}, {dateCols}, {guidCols})"; await TableSchemaProvider.ExecuteScriptAsync(connection, sqlCsvData); }
public SchemaProvider(ISchemaOptions schemaOptions) { ArgumentUtility.CheckNotNull("schemaOptions", schemaOptions); ArgumentUtility.CheckNotNull("schemaOptions.Database", schemaOptions.Database); ArgumentUtility.CheckNotNullOrEmpty("schemaOptions.ConnectionString", schemaOptions.ConnectionString); this._container = ContainerConfigurator.Configure(new UnityContainer(), schemaOptions); this._tableSchemaProvider = this._container.Resolve <TableSchemaProvider>(); this._associationSchemaProvider = this._container.Resolve <AssociationSchemaProvider>(); this._dbTypeProvider = this._container.Resolve <DbTypeProvider>(); var columnTypeSchemaProvider = this._container.Resolve <ColumnTypeSchemaProvider>(); this._columnTypes = columnTypeSchemaProvider.GetSchema(); this._duplicatePropertyNameResolver = this._container.Resolve <DuplicatePropertyNameResolver>(); this._pluralizationService = this._container.Resolve <PluralizationService>(); }