Пример #1
0
        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>();
        }