示例#1
0
        public void FillCommandWithCorrectArguments()
        {
            var item = new Foo
            {
                Id               = 336,
                Plat             = 1500,
                KrstneMeno       = "Homer",
                PropertyGuid     = new Guid("{C0DC6F49-10A5-4AB7-9B9C-4152C25238BF}"),
                PropertyEnum     = TestEnum.Value1,
                PropertyEnumConv = TestEnum.Value2
            };

            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(new SqlCommand());

            IQuery <Foo> query = CreateFooQuery();

            query.Select(p => new { p.Id, p.Plat, p.KrstneMeno, p.PropertyGuid, p.PropertyEnum, p.PropertyEnumConv });

            var       generator = new CommandGenerator <Foo>(GetFooTableInfo(), provider, query);
            DbCommand insert    = generator.GetInsertCommand();

            generator.FillCommand(insert, item, ValueGenerated.OnInsert);

            insert.Parameters["@IdRow"].Value.Should().Be(336);
            insert.Parameters["@Salary"].Value.Should().Be((decimal)1500);
            insert.Parameters["@FirstName"].Value.Should().Be("Homer");
            insert.Parameters["@PropertyGuid"].Value.Should().Be(new Guid("{C0DC6F49-10A5-4AB7-9B9C-4152C25238BF}"));
            insert.Parameters["@PropertyEnum"].Value.Should().Be(1);
            insert.Parameters["@PropertyEnumConv"].Value.Should().Be("V2");
        }
示例#2
0
        public void CommandShouldNotContainGeneratedValueWhenIgnored()
        {
            var item = new Foo
            {
                PropertyValueGenerator = 552
            };

            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(new SqlCommand());

            IQuery <Foo> query = CreateFooQuery();

            query.Select(p => new { p.PropertyValueGenerator });

            var generator = new CommandGenerator <Foo>(GetFooTableInfo(ValueGenerated.OnInsertOrUpdate), provider, query);

            DbCommand insert = generator.GetInsertCommand();
            DbCommand update = generator.GetUpdateCommand();

            generator.FillCommand(insert, item, ValueGenerated.OnInsert, true);
            insert.Parameters["@PropertyValueGenerator"].Value.Should().Be(552);

            generator.FillCommand(update, item, ValueGenerated.OnUpdate, true);
            update.Parameters["@PropertyValueGenerator"].Value.Should().Be(552);
        }
        public void UseConverter()
        {
            var idColumn = new ColumnInfo()
            {
                Name         = nameof(ConverterDto.Id),
                PropertyInfo = GetPropertyInfo <ConverterDto>(nameof(ConverterDto.Id))
            };
            var nameColumn = new ColumnInfo()
            {
                Name         = nameof(ConverterDto.Name),
                PropertyInfo = GetPropertyInfo <ConverterDto>(nameof(ConverterDto.Name)),
                Converter    = new NullToStringConverter()
            };
            var tableInfo = new TableInfo(new[] { idColumn, nameColumn }, new List <PropertyInfo>(), null)
            {
                Name = nameof(ConverterDto)
            };

            KORM.Query.IQueryProvider queryProvider = Substitute.For <KORM.Query.IQueryProvider>();
            IDatabaseMapper           mapper        = Substitute.For <IDatabaseMapper>();

            mapper.GetTableInfo <ConverterDto>().Returns(tableInfo);
            var query = new Query <ConverterDto>(mapper, queryProvider);

            var generator = new CommandGenerator <ConverterDto>(tableInfo, queryProvider, query);
            var dto       = new ConverterDto()
            {
                Id = 1, Name = null
            };
            var convertedValue = generator.GetColumnValue(nameColumn, dto);

            convertedValue.Should().Be("NULL");
        }
示例#4
0
        private CommandGenerator <T> CreateCommandGenerator <T>(TableInfo tableInfo)
        {
            IDatabaseMapper mapper = Substitute.For <IDatabaseMapper>();

            mapper.GetTableInfo <T>().Returns(tableInfo);
            KORM.Query.IQueryProvider queryProvider = Substitute.For <KORM.Query.IQueryProvider>();
            var query = new Query <T>(mapper, queryProvider);

            return(new CommandGenerator <T>(tableInfo, queryProvider, query));
        }
示例#5
0
        private CommandGenerator <FooIdentity> GetFooIdentityGenerator()
        {
            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); });

            IQuery <FooIdentity> query = CreateFooIdentityQuery();

            query.Select(p => new { p.Id, p.Plat });
            return(new CommandGenerator <FooIdentity>(GetFooIdentityTableInfo(), provider, query));
        }
示例#6
0
        private CommandGenerator <Foo> GetUpsertFooGenerator()
        {
            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); });

            IQuery <Foo> query = CreateFooQuery();

            query.Select(p => new { p.Id, p.KrstneMeno, p.PropertyEnum, p.Plat, p.PropertyValueGenerator });
            return(new CommandGenerator <Foo>(GetFooTableInfo(), provider, query));
        }
示例#7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CommandGenerator{T}" /> class.
        /// </summary>
        /// <param name="tableInfo">Information about table from database.</param>
        /// <param name="provider">Provider, that can execute queries.</param>
        /// <param name="query">Executing query.</param>
        public CommandGenerator(TableInfo tableInfo, KORM.Query.IQueryProvider provider, IQueryBase <T> query)
        {
            Check.NotNull(tableInfo, nameof(tableInfo));
            Check.NotNull(provider, nameof(provider));
            Check.NotNull(query, nameof(query));

            _tableInfo = tableInfo;
            _provider  = provider;
            _query     = query;
        }
示例#8
0
        private CommandGenerator <FooPrimaryKeys> GetFooPrimaryKeyGenerator()
        {
            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); });

            IQuery <FooPrimaryKeys> query = CreateQuery <FooPrimaryKeys>();

            query.Select(p => new { FK1 = 1, FK2 = 2 });
            TableInfo tableInfo = CreateTableInfoFromDto <FooPrimaryKeys>();

            return(new CommandGenerator <FooPrimaryKeys>(tableInfo, provider, query));
        }
示例#9
0
        public void ThrowMissingPrimaryKeyExceptionWhenGetDeleteCommand()
        {
            KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>();
            provider.GetCommandForCurrentTransaction().Returns(new SqlCommand());

            IQuery <Foo> query = CreateFooQuery();

            query.Select(p => new { p.Plat, p.KrstneMeno, p.PropertyGuid, p.PropertyEnum, p.PropertyEnumConv });

            var    generator = new CommandGenerator <Foo>(GetFooTableInfo(false), provider, query);
            Action action    = () =>
            {
                DbCommand update = generator.GetDeleteCommand();
            };

            action.Should().Throw <KORM.Exceptions.MissingPrimaryKeyException>();
        }