protected override void OnSetup() { ICollection <string> settingsKeys = ((IDictionary <string, object>)Settings).Keys; if (settingsKeys.Contains("ConnectionString")) { if (settingsKeys.Contains("ProviderName")) { _connectionProvider = ProviderHelper.GetProviderByConnectionString(Settings.ConnectionString, Settings.ProviderName); } else { _connectionProvider = ProviderHelper.GetProviderByConnectionString(Settings.ConnectionString); } } else if (settingsKeys.Contains("Filename")) { _connectionProvider = ProviderHelper.GetProviderByFilename(Settings.Filename); } else if (settingsKeys.Contains("ConnectionName")) { _connectionProvider = ProviderHelper.GetProviderByConnectionName(Settings.ConnectionName); } _schema = DatabaseSchema.Get(_connectionProvider, _providerHelper); _relatedFinder = new Lazy <AdoAdapterRelatedFinder>(CreateRelatedFinder); _commandOptimizer = ProviderHelper.GetCustomProvider <CommandOptimizer>(_connectionProvider) ?? new CommandOptimizer(); }
public override int UpdateMany(string tableName, IEnumerable <IDictionary <string, object> > data) { IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider <IBulkUpdater>(ConnectionProvider) ?? new BulkUpdater(); return(bulkUpdater.Update(this, tableName, data.ToList(), null)); }
public override IEnumerable <IEnumerable <IDictionary <string, object> > > RunQueries(SimpleQuery[] queries, List <IEnumerable <SimpleQueryClauseBase> > unhandledClauses) { if (ProviderSupportsCompoundStatements && queries.Length > 1) { var commandBuilders = new ICommandBuilder[queries.Length]; for (int i = 0; i < queries.Length; i++) { IEnumerable <SimpleQueryClauseBase> unhandledClausesForThisQuery; commandBuilders[i] = new QueryBuilder(this, i).Build(queries[i], out unhandledClausesForThisQuery); unhandledClauses.Add(unhandledClausesForThisQuery); } var connection = _connectionProvider.CreateConnection(); var command = CommandBuilder.CreateCommand(_providerHelper.GetCustomProvider <IDbParameterFactory>(_schema.SchemaProvider), commandBuilders, connection); foreach (var item in command.ToEnumerables(connection)) { yield return(item.ToList()); } } else { foreach (SimpleQuery t in queries) { IEnumerable <SimpleQueryClauseBase> unhandledClausesForThisQuery; yield return(RunQuery(t, out unhandledClausesForThisQuery)); unhandledClauses.Add(unhandledClausesForThisQuery); } } }
internal AdoAdapter(IConnectionProvider connectionProvider) : this() { _connectionProvider = connectionProvider; _schema = DatabaseSchema.Get(_connectionProvider, _providerHelper); _relatedFinder = new Lazy <AdoAdapterRelatedFinder>(CreateRelatedFinder); _commandOptimizer = ProviderHelper.GetCustomProvider <CommandOptimizer>(_connectionProvider) ?? new CommandOptimizer(); }
public int UpdateMany(string tableName, IEnumerable <IDictionary <string, object> > data, IAdapterTransaction transaction, IList <string> keyFields) { IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider <IBulkUpdater>(ConnectionProvider) ?? new BulkUpdater(); return(bulkUpdater.Update(this, tableName, data.ToList(), ((AdoAdapterTransaction)transaction).DbTransaction)); }
public int UpdateMany(string tableName, IList <IDictionary <string, object> > dataList, IEnumerable <string> criteriaFieldNames, IAdapterTransaction adapterTransaction) { IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider <IBulkUpdater>(ConnectionProvider) ?? new BulkUpdater(); return(bulkUpdater.Update(this, tableName, dataList, criteriaFieldNames, ((AdoAdapterTransaction)adapterTransaction).DbTransaction)); }
public override IEnumerable <IDictionary <string, object> > RunQuery(SimpleQuery query, out IEnumerable <SimpleQueryClauseBase> unhandledClauses) { if (query.Clauses.OfType <WithCountClause>().Any()) { return(RunQueryWithCount(query, out unhandledClauses)); } ICommandBuilder[] commandBuilders = GetQueryCommandBuilders(query, out unhandledClauses); IDbConnection connection = CreateConnection(); if (ProviderSupportsCompoundStatements || commandBuilders.Length == 1) { return (CommandBuilder.CreateCommand( _providerHelper.GetCustomProvider <IDbParameterFactory>(_schema.SchemaProvider), commandBuilders, connection).ToEnumerable(this.CreateConnection)); } else { return(commandBuilders.SelectMany(cb => cb.GetCommand(connection).ToEnumerable(this.CreateConnection))); } }
private Func <IDbCommand, IDbParameterFactory> CreateGetParameterFactoryFunc() { if (_getParameterFactory == null) { var customParameterFactory = _customInterfaceProvider.GetCustomProvider <IDbParameterFactory>(_schemaProvider); if (customParameterFactory != null) { _getParameterFactory = _ => customParameterFactory; } else { _getParameterFactory = c => new GenericDbParameterFactory(c); } } return(_getParameterFactory); }
private ICommandBuilder[] GetPagedQueryCommandBuilders(SimpleQuery query, Int32 bulkIndex, out IEnumerable <SimpleQueryClauseBase> unhandledClauses) { var commandBuilders = new List <ICommandBuilder>(); var unhandledClausesList = new List <SimpleQueryClauseBase>(); unhandledClauses = unhandledClausesList; IEnumerable <SimpleQueryClauseBase> unhandledClausesForPagedQuery; ICommandBuilder mainCommandBuilder = new QueryBuilder(this, bulkIndex).Build(query, out unhandledClausesForPagedQuery); unhandledClausesList.AddRange(unhandledClausesForPagedQuery); const int maxInt = 2147483646; SkipClause skipClause = query.Clauses.OfType <SkipClause>().FirstOrDefault() ?? new SkipClause(0); TakeClause takeClause = query.Clauses.OfType <TakeClause>().FirstOrDefault() ?? new TakeClause(maxInt); if (skipClause.Count != 0 || takeClause.Count != maxInt) { var queryPager = ProviderHelper.GetCustomProvider <IQueryPager>(ConnectionProvider); if (queryPager == null) { unhandledClausesList.AddRange(query.OfType <SkipClause>()); unhandledClausesList.AddRange(query.OfType <TakeClause>()); } IEnumerable <string> commandTexts = queryPager.ApplyPaging(mainCommandBuilder.Text, skipClause.Count, takeClause.Count); foreach (string commandText in commandTexts) { var commandBuilder = new CommandBuilder(commandText, _schema, mainCommandBuilder.Parameters); commandBuilders.Add(commandBuilder); } } return(commandBuilders.ToArray()); }