Exemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
                    }
                }
            }
        }