public void Discover_returns_configuration_when_fk_equals_entity_plus_pk_but_more_than_one_association()
        {
            var modelBuilder = new DbModelBuilder();

            modelBuilder.Entity <Entity1>().HasRequired(e => e.Two).WithMany().HasForeignKey(e => e.Entity2Entity2Id);
            var model              = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType         = model.ConceptualModel.EntityTypes.First(t => t.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Two");

            var configuration = new ForeignKeyDiscoverer()
                                .Discover(navigationProperty, model) as ForeignKeyConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(new[] { "Entity2Entity2Id" }, configuration.Properties.Select(p => p.Name));
        }
        public void Discover_returns_configuration_when_composite_key()
        {
            var modelBuilder = new DbModelBuilder();

            modelBuilder.Entity <Entity2>().HasKey(e => new { e.Entity2Id, e.Name });
            modelBuilder.Entity <Entity1>().HasRequired(e => e.Two).WithMany().HasForeignKey(
                e => new { e.Entity2Id, e.Name });
            modelBuilder.Entity <Entity1>().Ignore(e => e.Entity2s);
            var model              = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType         = model.ConceptualModel.EntityTypes.First(t => t.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Two");

            var configuration = new ForeignKeyDiscoverer()
                                .Discover(navigationProperty, model) as ForeignKeyConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(new[] { "Entity2Id", "Name" }, configuration.Properties.Select(p => p.Name));
        }
        public void Discover_returns_configuration_when_fk_equals_entity_plus_pk_but_more_than_one_association()
        {
            var modelBuilder = new DbModelBuilder();
            modelBuilder.Entity<Entity1>().HasRequired(e => e.Two).WithMany().HasForeignKey(e => e.Entity2Entity2Id);
            var model = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType = model.ConceptualModel.EntityTypes.First(t => t.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Two");

            var configuration = new ForeignKeyDiscoverer()
                .Discover(navigationProperty, model) as ForeignKeyConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(new[] { "Entity2Entity2Id" }, configuration.Properties.Select(p => p.Name));
        }
        public void Discover_returns_configuration_when_composite_key()
        {
            var modelBuilder = new DbModelBuilder();
            modelBuilder.Entity<Entity2>().HasKey(e => new { e.Entity2Id, e.Name });
            modelBuilder.Entity<Entity1>().HasRequired(e => e.Two).WithMany().HasForeignKey(
                e => new { e.Entity2Id, e.Name });
            modelBuilder.Entity<Entity1>().Ignore(e => e.Entity2s);
            var model = modelBuilder.Build(new DbProviderInfo("System.Data.SqlClient", "2012"));
            var entityType = model.ConceptualModel.EntityTypes.First(t => t.Name == "Entity1");
            var navigationProperty = entityType.NavigationProperties.First(p => p.Name == "Two");

            var configuration = new ForeignKeyDiscoverer()
                .Discover(navigationProperty, model) as ForeignKeyConfiguration;

            Assert.NotNull(configuration);
            Assert.Equal(new[] { "Entity2Id", "Name" }, configuration.Properties.Select(p => p.Name));
        }