Esempio n. 1
0
        public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
        {
            ArgumentUtility.CheckNotNull("commandExecutionContext", commandExecutionContext);

            var command = commandExecutionContext.CreateDbCommand();

            var statement = _statement;

            foreach (var parameterWithType in _parametersWithType)
            {
                if (parameterWithType.QueryParameter.ParameterType == QueryParameterType.Text)
                {
                    statement = statement.Replace(parameterWithType.QueryParameter.Name, parameterWithType.QueryParameter.Value.ToString());
                }
                else
                {
                    var parameter = parameterWithType.StorageTypeInformation.CreateDataParameter(command, parameterWithType.QueryParameter.Value);
                    parameter.ParameterName = parameterWithType.QueryParameter.Name;
                    command.Parameters.Add(parameter);
                }
            }

            command.CommandText = statement;
            return(command);
        }
Esempio n. 2
0
        public IEnumerable <ObjectLookupResult <DataContainer> > Execute(IRdbmsProviderCommandExecutionContext executionContext)
        {
            ArgumentUtility.CheckNotNull("executionContext", executionContext);

            var objectIds = _objectIDLoadCommand.Execute(executionContext);

            return(_storageProviderCommandFactory.CreateForSortedMultiIDLookup(objectIds.ToArray()).Execute(executionContext));
        }
        public void SetUp()
        {
            _fakeResult = new object();

            _commandExecutionContextMock = MockRepository.GenerateStrictMock <IRdbmsProviderCommandExecutionContext>();
            _dbCommandMock        = MockRepository.GenerateStrictMock <IDbCommand>();
            _dbCommandBuilderMock = MockRepository.GenerateStrictMock <IDbCommandBuilder>();

            _command = new ScalarValueLoadCommand(_dbCommandBuilderMock);
        }
Esempio n. 4
0
        public override void SetUp()
        {
            base.SetUp();

            _commandStub      = MockRepository.GenerateStub <IStorageProviderCommand <IEnumerable <DataContainer>, IRdbmsProviderCommandExecutionContext> >();
            _executionContext = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();

            _order1Container = DataContainerObjectMother.Create(DomainObjectIDs.Order1);
            _order2Container = DataContainerObjectMother.Create(DomainObjectIDs.Order3);
            _order3Container = DataContainerObjectMother.Create(DomainObjectIDs.Order4);
        }
        public void SetUp()
        {
            _fakeResult = new object();

            _dataReaderMock = MockRepository.GenerateStub <IDataReader>();
            _commandExecutionContextMock = MockRepository.GenerateStrictMock <IRdbmsProviderCommandExecutionContext>();
            _dbCommandMock        = MockRepository.GenerateStrictMock <IDbCommand>();
            _dbCommandBuilderMock = MockRepository.GenerateStrictMock <IDbCommandBuilder>();
            _objectReaderMock     = MockRepository.GenerateStrictMock <IObjectReader <object> > ();

            _command = new SingleObjectLoadCommand <object> (_dbCommandBuilderMock, _objectReaderMock);
        }
        public T Execute(IRdbmsProviderCommandExecutionContext executionContext)
        {
            ArgumentUtility.CheckNotNull("executionContext", executionContext);

            using (var command = _dbCommandBuilder.Create(executionContext))
            {
                using (var reader = executionContext.ExecuteReader(command, CommandBehavior.SingleRow))
                {
                    return(_objectReader.Read(reader));
                }
            }
        }
        public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
        {
            ArgumentUtility.CheckNotNull("commandExecutionContext", commandExecutionContext);

            var command   = commandExecutionContext.CreateDbCommand();
            var statement = new StringBuilder();

            statement.Append("DELETE FROM ");
            AppendTableName(statement, _tableDefinition);
            AppendWhereClause(statement, _comparedColumnsSpecification, command);
            statement.Append(SqlDialect.StatementDelimiter);

            command.CommandText = statement.ToString();
            return(command);
        }
        private IEnumerable <T> LoadDataContainersFromCommandBuilder(
            Tuple <IDbCommandBuilder, IObjectReader <T> > commandBuilderTuple, IRdbmsProviderCommandExecutionContext executionContext)
        {
            ArgumentUtility.CheckNotNull("commandBuilderTuple", commandBuilderTuple);

            using (var command = commandBuilderTuple.Item1.Create(executionContext))
            {
                using (var reader = executionContext.ExecuteReader(command, CommandBehavior.SingleResult))
                {
                    // Use yield return to keep reader and command open while reading items
                    foreach (var dataContainer in commandBuilderTuple.Item2.ReadSequence(reader))
                    {
                        yield return(dataContainer);
                    }
                }
            }
        }
        public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
        {
            ArgumentUtility.CheckNotNull("commandExecutionContext", commandExecutionContext);

            var command = commandExecutionContext.CreateDbCommand();

            var statement = new StringBuilder();

            AppendSelectClause(statement, _selectedColumns);
            AppendFromClause(statement, _table);
            AppendWhereClause(statement, _comparedColumns, command);
            AppendOrderByClause(statement, _orderedColumns);
            statement.Append(SqlDialect.StatementDelimiter);

            command.CommandText = statement.ToString();

            return(command);
        }
        public override void SetUp()
        {
            base.SetUp();

            _comparedColumnsSpecificationStrictMock = MockRepository.GenerateStrictMock <IComparedColumnsSpecification>();

            _sqlDialectStub = MockRepository.GenerateStub <ISqlDialect>();
            _sqlDialectStub.Stub(stub => stub.StatementDelimiter).Return(";");
            _dbDataParameterStub         = MockRepository.GenerateStub <IDbDataParameter>();
            _dataParameterCollectionMock = MockRepository.GenerateStrictMock <IDataParameterCollection>();

            _dbCommandStub = MockRepository.GenerateStub <IDbCommand>();
            _dbCommandStub.Stub(stub => stub.CreateParameter()).Return(_dbDataParameterStub);
            _dbCommandStub.Stub(stub => stub.Parameters).Return(_dataParameterCollectionMock);

            _commandExecutionContextStub = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();
            _commandExecutionContextStub.Stub(stub => stub.CreateDbCommand()).Return(_dbCommandStub);
        }
        public void SetUp()
        {
            _repository = new MockRepository();

            _dataReaderMock = _repository.StrictMock <IDataReader>();
            _commandExecutionContextStub = _repository.Stub <IRdbmsProviderCommandExecutionContext>();

            _dbCommandMock1        = _repository.StrictMock <IDbCommand>();
            _dbCommandMock2        = _repository.StrictMock <IDbCommand>();
            _dbCommandBuilderMock1 = _repository.StrictMock <IDbCommandBuilder>();
            _dbCommandBuilderMock2 = _repository.StrictMock <IDbCommandBuilder>();

            _objectReaderStub1 = _repository.Stub <IObjectReader <object> > ();
            _objectReaderStub2 = _repository.Stub <IObjectReader <object> > ();

            _fakeResult1 = new object();
            _fakeResult2 = new object();
        }
Esempio n. 12
0
        public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
        {
            ArgumentUtility.CheckNotNull("commandExecutionContext", commandExecutionContext);

            var command   = commandExecutionContext.CreateDbCommand();
            var statement = new StringBuilder();

            statement.Append("INSERT INTO ");
            AppendTableName(statement, _tableDefinition);
            statement.Append(" (");
            _insertedColumnsSpecification.AppendColumnNames(statement, command, SqlDialect);
            statement.Append(") VALUES (");
            _insertedColumnsSpecification.AppendColumnValues(statement, command, SqlDialect);
            statement.Append(")");
            statement.Append(SqlDialect.StatementDelimiter);

            command.CommandText = statement.ToString();

            return(command);
        }
        public override void SetUp()
        {
            base.SetUp();

            _repository = new MockRepository();

            _dbCommandBuilder1Mock = _repository.StrictMock <IDbCommandBuilder>();
            _dbCommandBuilder2Mock = _repository.StrictMock <IDbCommandBuilder>();

            _commandExecutionContextStub = _repository.Stub <IRdbmsProviderCommandExecutionContext> ();
            _objectIDReaderStub          = _repository.Stub <IObjectReader <ObjectID> > ();

            _dbCommandMock1 = _repository.StrictMock <IDbCommand>();
            _dbCommandMock2 = _repository.StrictMock <IDbCommand> ();
            _dataReaderMock = _repository.StrictMock <IDataReader>();

            _command = new MultiObjectIDLoadCommand(new[] { _dbCommandBuilder1Mock, _dbCommandBuilder2Mock }, _objectIDReaderStub);

            _objectID1  = new ObjectID("Order", Guid.NewGuid());
            _fakeResult = new[] { _objectID1 };
        }
        public IEnumerable <ObjectLookupResult <DataContainer> > Execute(IRdbmsProviderCommandExecutionContext executionContext)
        {
            ArgumentUtility.CheckNotNull("executionContext", executionContext);

            var dataContainers = _command.Execute(executionContext);

            var dataContainersByID = new Dictionary <ObjectID, DataContainer> ();

            foreach (var dataContainer in dataContainers.Where(dc => dc != null))
            {
                // Duplicates overwrite the previous DataContainer
                dataContainersByID[dataContainer.ID] = dataContainer;
            }

            var unassociatedDataContainerIDs = new HashSet <ObjectID> (dataContainersByID.Keys);

            foreach (var objectID in _objectIDs)
            {
                var lookupResult = CreateLookupResult(objectID, dataContainersByID);
                unassociatedDataContainerIDs.Remove(lookupResult.ObjectID);
                yield return(lookupResult);
            }

            if (unassociatedDataContainerIDs.Count > 0)
            {
                var objectIDsByValue          = _objectIDs.ToLookup(id => id.Value);
                var nonMatchingIDDescriptions = unassociatedDataContainerIDs
                                                .Select(loadedID => new { LoadedID = loadedID, ExpectedIDs = objectIDsByValue[loadedID.Value] })
                                                .Select(
                    t => string.Format(
                        "Loaded DataContainer ID: {0}, expected ObjectID(s): {1}",
                        t.LoadedID,
                        t.ExpectedIDs.Any() ? string.Join(", ", t.ExpectedIDs.Distinct()) : "none"));
                var message = string.Format(
                    "The ObjectID of one or more loaded DataContainers does not match the expected ObjectIDs:{0}{1}",
                    Environment.NewLine,
                    string.Join(Environment.NewLine, nonMatchingIDDescriptions));
                throw new PersistenceException(message);
            }
        }
Esempio n. 15
0
        public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
        {
            ArgumentUtility.CheckNotNull("commandExecutionContext", commandExecutionContext);

            var command = commandExecutionContext.CreateDbCommand();

            var fullProjection = _orderedColumns.UnionWithSelectedColumns(_selectedColumns);

            var  statement = new StringBuilder();
            bool first     = true;

            _comparedColumns.AddParameters(command, SqlDialect);

            foreach (var table in _unionViewDefinition.GetAllTables())
            {
                if (!first)
                {
                    statement.Append(" UNION ALL ");
                }

                var adjustedProjection = fullProjection.AdjustForTable(table);
                AppendSelectClause(statement, adjustedProjection);
                AppendFromClause(statement, table);

                statement.Append(" WHERE ");
                _comparedColumns.AppendComparisons(statement, command, SqlDialect);

                first = false;
            }

            AppendOrderByClause(statement, _orderedColumns);

            statement.Append(SqlDialect.StatementDelimiter);

            command.CommandText = statement.ToString();

            return(command);
        }
Esempio n. 16
0
        public override void SetUp()
        {
            base.SetUp();

            _selectedColumnsStub = MockRepository.GenerateStub <ISelectedColumnsSpecification>();
            _selectedColumnsStub
            .Stub(stub => stub.AppendProjection(Arg <StringBuilder> .Is.Anything, Arg <ISqlDialect> .Is.Anything))
            .WhenCalled(mi => ((StringBuilder)mi.Arguments[0]).Append("[Column1], [Column2], [Column3]"));
            _comparedColumnsStrictMock = MockRepository.GenerateStrictMock <IComparedColumnsSpecification> ();
            _orderedColumnsStub        = MockRepository.GenerateStub <IOrderedColumnsSpecification> ();

            _sqlDialectStub = MockRepository.GenerateStub <ISqlDialect>();
            _sqlDialectStub.Stub(stub => stub.StatementDelimiter).Return(";");
            _dbDataParameterStub         = MockRepository.GenerateStub <IDbDataParameter>();
            _dataParameterCollectionMock = MockRepository.GenerateStrictMock <IDataParameterCollection>();

            _dbCommandStub = MockRepository.GenerateStub <IDbCommand>();
            _dbCommandStub.Stub(stub => stub.CreateParameter()).Return(_dbDataParameterStub);
            _dbCommandStub.Stub(stub => stub.Parameters).Return(_dataParameterCollectionMock);

            _commandExecutionContextStub = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();
            _commandExecutionContextStub.Stub(stub => stub.CreateDbCommand()).Return(_dbCommandStub);
        }
        public override void SetUp()
        {
            base.SetUp();

            _originalSelectedColumnsStub = MockRepository.GenerateStub <ISelectedColumnsSpecification> ();
            _comparedColumnsStrictMock   = MockRepository.GenerateStrictMock <IComparedColumnsSpecification>();
            _fullSelectedColumnsStub     = MockRepository.GenerateStub <ISelectedColumnsSpecification> ();
            _orderedColumnsStub          = MockRepository.GenerateStub <IOrderedColumnsSpecification> ();

            _sqlDialectStub = MockRepository.GenerateStub <ISqlDialect>();
            _sqlDialectStub.Stub(stub => stub.StatementDelimiter).Return(";");

            _dbCommandStub = MockRepository.GenerateStub <IDbCommand>();

            _commandExecutionContextStub = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();
            _commandExecutionContextStub.Stub(stub => stub.CreateDbCommand()).Return(_dbCommandStub);

            Guid.NewGuid();

            _table1 = TableDefinitionObjectMother.Create(TestDomainStorageProviderDefinition, new EntityNameDefinition(null, "Table1"));
            _table2 = TableDefinitionObjectMother.Create(TestDomainStorageProviderDefinition, new EntityNameDefinition(null, "Table2"));
            _table3 = TableDefinitionObjectMother.Create(TestDomainStorageProviderDefinition, new EntityNameDefinition("customSchema", "Table3"));
        }
Esempio n. 18
0
        public override void SetUp()
        {
            base.SetUp();

            _fakeResult = new ObjectLookupResult <DataContainer> [0];
            _objectID1  = DomainObjectIDs.Order1;
            _objectID2  = DomainObjectIDs.Order3;
            _commandExecutionContextStub = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();
            _commandExecutionContextStub = MockRepository.GenerateStub <IRdbmsProviderCommandExecutionContext>();

            _objectIDLoadCommandStub = MockRepository.GenerateStub <IStorageProviderCommand <IEnumerable <ObjectID>, IRdbmsProviderCommandExecutionContext> >();
            _objectIDLoadCommandStub.Stub(stub => stub.Execute(_commandExecutionContextStub)).Return(new[] { _objectID1, _objectID2 });

            _dataContainerLoadCommandStub =
                MockRepository.GenerateStub <IStorageProviderCommand <ObjectLookupResult <DataContainer>[], IRdbmsProviderCommandExecutionContext> >();
            _dataContainerLoadCommandStub.Stub(stub => stub.Execute(_commandExecutionContextStub)).Return(_fakeResult);

            _storageProviderFactoryStub = MockRepository.GenerateStub <IStorageProviderCommandFactory <IRdbmsProviderCommandExecutionContext> >();
            _storageProviderFactoryStub
            .Stub(stub => stub.CreateForSortedMultiIDLookup(Arg <ObjectID[]> .List.Equal(new[] { _objectID1, _objectID2 })))
            .Return(_dataContainerLoadCommandStub);

            _loadCommand = new IndirectDataContainerLoadCommand(_objectIDLoadCommandStub, _storageProviderFactoryStub);
        }
Esempio n. 19
0
 public abstract IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext);
 public IEnumerable <T> Execute(IRdbmsProviderCommandExecutionContext executionContext)
 {
     ArgumentUtility.CheckNotNull("executionContext", executionContext);
     return(_dbCommandBuildersAndReaders.SelectMany(b => LoadDataContainersFromCommandBuilder(b, executionContext)));
 }
Esempio n. 21
0
 public override IDbCommand Create(IRdbmsProviderCommandExecutionContext commandExecutionContext)
 {
     throw new NotImplementedException();
 }