public void Can_insert_and_delete_when_many_to_many()
            {
                using (var context = CreateContext())
                {
                    var tag = new FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag
                    {
                        Products = new List <FunctionalTests.FunctionsScenarioTests.ModificationFunctions.ProductA>
                        {
                            new FunctionalTests.FunctionsScenarioTests.ModificationFunctions.ProductA()
                        }
                    };

                    Assert.Equal(0, context.Set <FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>().SelectMany(t => t.Products).Count());

                    // Insert
                    context.Set <FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>().Add(tag);
                    context.SaveChanges();

                    Assert.Equal(1, context.Set <FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>().SelectMany(t => t.Products).Count());

                    // Delete
                    tag.Products.Clear();
                    context.SaveChanges();

                    Assert.Equal(0, context.Set <FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>().SelectMany(t => t.Products).Count());
                }
            }
            public void Can_insert_and_delete_when_many_to_many()
            {
                ExtendedSqlAzureExecutionStrategy.ExecuteNew(
                    () =>
                    {
                        using (new TransactionScope())
                        {
                            using (var context = CreateContext())
                            {
                                var tag = new FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag
                                {
                                    Products = new List<FunctionalTests.FunctionsScenarioTests.ModificationFunctions.ProductA>
                                    {
                                        new FunctionalTests.FunctionsScenarioTests.ModificationFunctions.ProductA()
                                    }
                                };

                                Assert.Equal(
                                    0,
                                    context.Set<FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>()
                                        .SelectMany(t => t.Products)
                                        .Count());

                                // Insert
                                context.Set<FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>().Add(tag);
                                context.SaveChanges();

                                Assert.Equal(
                                    1,
                                    context.Set<FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>()
                                        .SelectMany(t => t.Products)
                                        .Count());

                                // Delete
                                tag.Products.Clear();
                                context.SaveChanges();

                                Assert.Equal(
                                    0,
                                    context.Set<FunctionalTests.FunctionsScenarioTests.ModificationFunctions.Tag>()
                                        .SelectMany(t => t.Products)
                                        .Count());
                            }
                        }
                    });
            }