public void Can_generate_insert_tree_when_table_splitting_dependent()
        {
            DbModel model;

            using (var context = new TableSplittingContext())
            {
                model
                    = context
                      .InternalContext
                      .CodeFirstModel
                      .CachedModelBuilder
                      .BuildDynamicUpdateModel(ProviderRegistry.Sql2008_ProviderInfo);
            }

            var commandTreeGenerator
                = new ModificationCommandTreeGenerator(model);

            var commandTrees
                = commandTreeGenerator
                  .GenerateInsert(GetType().Namespace + ".StandingStone")
                  .ToList();

            Assert.Equal(1, commandTrees.Count());
            Assert.IsType <DbUpdateCommandTree>(commandTrees.Single());
        }
        public void Can_convert_insert_command_trees_when_table_splitting()
        {
            var model = TestContext.CreateDynamicUpdateModel();

            var modificationFunctionMapping
                = TestContext.GetModificationFunctionMapping("JobTask");

            var converter
                = new DynamicToFunctionModificationCommandConverter(
                      modificationFunctionMapping.Item1, modificationFunctionMapping.Item2);

            var modificationCommandTreeGenerator
                = new ModificationCommandTreeGenerator(model);

            var commandTrees
                = modificationCommandTreeGenerator
                  .GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName)
                  .ToList();

            Assert.Equal(1, commandTrees.Count());

            var resultTrees = converter.Convert(commandTrees).ToList();

            Assert.Equal(1, resultTrees.Count());

            var firstCommandTree = (DbUpdateCommandTree)resultTrees.First();

            Assert.Equal(2, firstCommandTree.Parameters.Count());
        }
        public void Can_generate_dynamic_insert_command_trees()
        {
            var model = TestContext.CreateDynamicUpdateModel();

            var commandTreeGenerator
                = new ModificationCommandTreeGenerator(model);

            var commandTrees
                = commandTreeGenerator
                  .GenerateInsert(GetType().Namespace + ".FunctionsModel.SpecialOrder")
                  .ToList();

            Assert.Equal(2, commandTrees.Count());

            var commandTree = (DbInsertCommandTree)commandTrees.First();

            Assert.Equal(8, commandTree.SetClauses.Count);
            Assert.Equal("Order", commandTree.Target.VariableType.EdmType.Name);
            Assert.NotNull(commandTree.Returning);

            commandTree = (DbInsertCommandTree)commandTrees.Last();

            Assert.Equal(8, commandTree.SetClauses.Count);
            Assert.NotNull(commandTree.Returning);
            Assert.Equal("special_orders", commandTree.Target.VariableType.EdmType.Name);

            commandTrees
                = commandTreeGenerator
                  .GenerateInsert(GetType().Namespace + ".FunctionsModel.Customer")
                  .ToList();

            Assert.Equal(1, commandTrees.Count());

            commandTree = (DbInsertCommandTree)commandTrees.Single();

            Assert.Equal(1, commandTree.SetClauses.Count);
            Assert.Equal("Customer", commandTree.Target.VariableType.EdmType.Name);
            Assert.NotNull(commandTree.Returning);
        }
Пример #4
0
        public void Can_generate_insert_tree_when_self_ref_direct()
        {
            DbModel model;

            using (var context = new WorldContext_Identity())
            {
                model = context.InternalContext.CodeFirstModel.CachedModelBuilder.BuildDynamicUpdateModel(ProviderRegistry.Sql2008_ProviderInfo);
            }

            var commandTreeGenerator = new ModificationCommandTreeGenerator(model);

            var commandTrees = commandTreeGenerator.GenerateInsert(GetType().Namespace + ".Thing").ToList();

            Assert.Equal(1, commandTrees.Count());
        }
        public void Can_convert_insert_command_trees()
        {
            var model = TestContext.CreateDynamicUpdateModel();

            var modificationFunctionMapping
                = TestContext.GetModificationFunctionMapping("ExtraSpecialOrder");

            var converter
                = new DynamicToFunctionModificationCommandConverter(
                      modificationFunctionMapping.Item1, modificationFunctionMapping.Item2);

            var modificationCommandTreeGenerator
                = new ModificationCommandTreeGenerator(model);

            var commandTrees
                = modificationCommandTreeGenerator
                  .GenerateInsert(modificationFunctionMapping.Item1.EntityType.FullName);

            Assert.Equal(3, commandTrees.Count());

            var resultTrees = converter.Convert(commandTrees);

            Assert.Equal(3, resultTrees.Count());

            var firstCommandTree = (DbInsertCommandTree)resultTrees.First();

            Assert.Equal(8, firstCommandTree.Parameters.Count());
            Assert.Equal(8, firstCommandTree.SetClauses.Count());

            Assert.Equal("teh_codez", firstCommandTree.Parameters.ElementAt(0).Key);
            Assert.Equal("Signature", firstCommandTree.Parameters.ElementAt(1).Key);
            Assert.Equal("the_name", firstCommandTree.Parameters.ElementAt(2).Key);
            Assert.Equal("Address_Street", firstCommandTree.Parameters.ElementAt(3).Key);
            Assert.Equal("Address_City", firstCommandTree.Parameters.ElementAt(4).Key);
            Assert.Equal("Address_CountryOrRegion_Name", firstCommandTree.Parameters.ElementAt(5).Key);
            Assert.Equal("OrderGroupId", firstCommandTree.Parameters.ElementAt(6).Key);
            Assert.Equal("Customer_CustomerId", firstCommandTree.Parameters.ElementAt(7).Key);

            var properties = ((RowType)firstCommandTree.Returning.ResultType.EdmType).Properties;

            Assert.Equal(4, properties.Count);
            Assert.Equal("key_result", properties[1].Name);
        }
        public void Can_generate_insert_tree_when_one_to_one_ia()
        {
            DbModel model;

            using (var context = new GearsOfWarContextSPBug())
            {
                model
                    = context
                      .InternalContext
                      .CodeFirstModel
                      .CachedModelBuilder
                      .BuildDynamicUpdateModel(ProviderRegistry.Sql2008_ProviderInfo);
            }

            var commandTreeGenerator
                = new ModificationCommandTreeGenerator(model);

            var commandTrees
                = commandTreeGenerator
                  .GenerateInsert(GetType().Namespace + ".Gear")
                  .ToList();

            Assert.Equal(1, commandTrees.Count());
        }