Ejemplo n.º 1
0
        private int ConsumeResultSetWithPropagation(int commandIndex, DbDataReader reader, DbContext context)
        {
            var rowsAffected = 0;
            var valueReader  = new RelationalTypedValueReader(reader);

            do
            {
                var tableModification = ModificationCommands[commandIndex];
                Contract.Assert(tableModification.RequiresResultPropagation);

                if (!reader.Read())
                {
                    var expectedRowsAffected = rowsAffected + 1;
                    while (++commandIndex < ResultSetEnds.Count &&
                           !ResultSetEnds[commandIndex - 1])
                    {
                        expectedRowsAffected++;
                    }

                    throw new DbUpdateConcurrencyException(
                              Strings.FormatUpdateConcurrencyException(expectedRowsAffected, rowsAffected),
                              context,
                              AggregateStateEntries(commandIndex, expectedRowsAffected));
                }

                tableModification.PropagateResults(valueReader);
                rowsAffected++;
            }while (++commandIndex < ResultSetEnds.Count &&
                    !ResultSetEnds[commandIndex - 1]);

            return(commandIndex);
        }
Ejemplo n.º 2
0
        private async Task <int> ConsumeResultSetWithPropagationAsync(int commandIndex, DbDataReader reader, DbContext context, CancellationToken cancellationToken)
        {
            var rowsAffected = 0;
            var valueReader  = new RelationalTypedValueReader(reader);

            do
            {
                var tableModification = ModificationCommands[commandIndex];
                Debug.Assert(tableModification.RequiresResultPropagation);

                if (!await reader.ReadAsync(cancellationToken).WithCurrentCulture())
                {
                    var expectedRowsAffected = rowsAffected + 1;
                    while (++commandIndex < ResultSetEnds.Count &&
                           !ResultSetEnds[commandIndex - 1])
                    {
                        expectedRowsAffected++;
                    }

                    throw new DbUpdateConcurrencyException(
                              Strings.UpdateConcurrencyException(expectedRowsAffected, rowsAffected),
                              context,
                              AggregateEntries(commandIndex, expectedRowsAffected));
                }

                tableModification.PropagateResults(valueReader);
                rowsAffected++;
            }while (++commandIndex < ResultSetEnds.Count &&
                    !ResultSetEnds[commandIndex - 1]);

            return(commandIndex);
        }
        public void Can_get_count()
        {
            var readerMock = new Mock<DbDataReader>();
            readerMock.Setup(m => m.FieldCount).Returns(2);

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.Equal(2, reader.Count);
        }
Ejemplo n.º 4
0
        public void Can_get_count()
        {
            var readerMock = new Mock <DbDataReader>();

            readerMock.Setup(m => m.FieldCount).Returns(2);

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.Equal(2, reader.Count);
        }
        public void Can_read_value()
        {
            var readerMock = new Mock<DbDataReader>();
            readerMock.Setup(m => m.GetValue(0)).Returns(77);
            readerMock.Setup(m => m.GetValue(1)).Returns("Smokey");

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.Equal(77, reader.ReadValue<int>(0));
            Assert.Equal("Smokey", reader.ReadValue<string>(1));
        }
        public void IsNull_delegates_to_IsDBNull()
        {
            var readerMock = new Mock<DbDataReader>();
            readerMock.Setup(m => m.IsDBNull(0)).Returns(true);
            readerMock.Setup(m => m.IsDBNull(1)).Returns(false);

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.True(reader.IsNull(0));
            Assert.False(reader.IsNull(1));
        }
Ejemplo n.º 7
0
        public void Can_read_value()
        {
            var readerMock = new Mock <DbDataReader>();

            readerMock.Setup(m => m.GetValue(0)).Returns(77);
            readerMock.Setup(m => m.GetValue(1)).Returns("Smokey");

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.Equal(77, reader.ReadValue <int>(0));
            Assert.Equal("Smokey", reader.ReadValue <string>(1));
        }
Ejemplo n.º 8
0
        public void IsNull_delegates_to_IsDBNull()
        {
            var readerMock = new Mock <DbDataReader>();

            readerMock.Setup(m => m.IsDBNull(0)).Returns(true);
            readerMock.Setup(m => m.IsDBNull(1)).Returns(false);

            var reader = new RelationalTypedValueReader(readerMock.Object);

            Assert.True(reader.IsNull(0));
            Assert.False(reader.IsNull(1));
        }
        private async Task<int> ConsumeResultSetWithPropagationAsync(int commandIndex, DbDataReader reader, DbContext context, CancellationToken cancellationToken)
        {
            var rowsAffected = 0;
            var valueReader = new RelationalTypedValueReader(reader);
            do
            {
                var tableModification = ModificationCommands[commandIndex];
                Debug.Assert(tableModification.RequiresResultPropagation);

                if (!await reader.ReadAsync(cancellationToken).WithCurrentCulture())
                {
                    var expectedRowsAffected = rowsAffected + 1;
                    while (++commandIndex < ResultSetEnds.Count
                           && !ResultSetEnds[commandIndex - 1])
                    {
                        expectedRowsAffected++;
                    }

                    throw new DbUpdateConcurrencyException(
                        Strings.UpdateConcurrencyException(expectedRowsAffected, rowsAffected),
                        context,
                        AggregateEntries(commandIndex, expectedRowsAffected));
                }

                tableModification.PropagateResults(valueReader);
                rowsAffected++;
            }
            while (++commandIndex < ResultSetEnds.Count
                   && !ResultSetEnds[commandIndex - 1]);

            return commandIndex;
        }