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); }
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); }
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)); }
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)); }
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; }