private async Task BulkUpdateCoreAsync( IEnumerable <T> items, Action <IDbConnection, IDbTransaction, string> tempTableAction, bool useAsync) { if (_tableInfo.PrimaryKey.Count() != 1) { throw new InvalidOperationException(string.Format(Resources.InvalidPrimaryKeyForBulkUpdate, _tableInfo.Name)); } if (items != null) { using (var bulkUpdate = _provider.CreateBulkUpdate()) { bulkUpdate.DestinationTableName = _tableInfo.Name; bulkUpdate.PrimaryKeyColumn = _tableInfo.PrimaryKey.FirstOrDefault().Name; bulkUpdate.TempTableAction = tempTableAction; using (var reader = new KormDataReader <T>(items, _commandGenerator)) { if (useAsync) { await bulkUpdate.UpdateAsync(reader); } else { bulkUpdate.Update(reader); } } } } }
private async Task BulkUpdateCoreAsync( IEnumerable <T> items, Action <IDbConnection, IDbTransaction, string> tempTableAction, bool useAsync) { if (!_tableInfo.PrimaryKey.Any()) { throw new InvalidOperationException(Resources.BulkUpdatePrimaryKeyIsNotSet); } if (items != null) { using (var bulkUpdate = _provider.CreateBulkUpdate()) { bulkUpdate.DestinationTableName = _tableInfo.Name; bulkUpdate.PrimaryKeyColumn = string.Join(",", _tableInfo.PrimaryKey.Select(pk => pk.Name)); bulkUpdate.TempTableAction = tempTableAction; using (var reader = new KormDataReader <T>(items, _commandGenerator)) { if (useAsync) { await bulkUpdate.UpdateAsync(reader); } else { bulkUpdate.Update(reader); } } } } }
public void GetColumnIndexByName() { var data = new HashSet <Foo>() { new Foo() { Prop1 = 1, Prop2 = "1", Prop3 = 1m }, new Foo() { Prop1 = 2, Prop2 = "2", Prop3 = 2m } }; var commandGenerator = Substitute.For <ICommandGenerator <Foo> >(); commandGenerator.GetQueryColumns().Returns(new List <ColumnInfo>() { new ColumnInfo() { Name = "Prop1" }, new ColumnInfo() { Name = "Prop2" } }); using (var reader = new KormDataReader <Foo>(data, commandGenerator)) { reader.GetOrdinal("Prop2").Should().Be(1); } }
public void Read2Value() { var data = new HashSet <Foo>() { new Foo() { Prop1 = 1, Prop2 = "1", Prop3 = 1m }, new Foo() { Prop1 = 2, Prop2 = "2", Prop3 = 2m } }; var commandGenerator = Substitute.For <ICommandGenerator <Foo> >(); commandGenerator.GetQueryColumns().Returns(new List <ColumnInfo>() { CreateColumnInfo(nameof(Foo.Prop1)), CreateColumnInfo(nameof(Foo.Prop2)) }); using (var reader = new KormDataReader <Foo>(data, commandGenerator)) { var count = 0; while (reader.Read()) { count++; } count.Should().Be(2); } }
public void HaveCorrectFieldCount() { var data = new HashSet <Foo>() { new Foo() { Prop1 = 1, Prop2 = "1", Prop3 = 1m }, new Foo() { Prop1 = 2, Prop2 = "2", Prop3 = 2m } }; var commandGenerator = Substitute.For <ICommandGenerator <Foo> >(); commandGenerator.GetQueryColumns().Returns(new List <ColumnInfo>() { new ColumnInfo() { } }); using (var reader = new KormDataReader <Foo>(data, commandGenerator)) { reader.FieldCount.Should().Be(1); } }
private void BulkUpdateCore(IEnumerable <T> items, Action <IDbConnection, IDbTransaction, string> tempTableAction) { if (_tableInfo.PrimaryKey.Count() != 1) { throw new InvalidOperationException( $"Table {_tableInfo.Name} has none, or composite primary key. Primary key must be one column only."); } if (items != null) { using (var bulkUpdate = _provider.CreateBulkUpdate()) { bulkUpdate.DestinationTableName = _tableInfo.Name; bulkUpdate.PrimaryKeyColumn = _tableInfo.PrimaryKey.FirstOrDefault().Name; bulkUpdate.TempTableAction = tempTableAction; using (var reader = new KormDataReader <T>(items, _commandGenerator)) { bulkUpdate.Update(reader); } } } }