Commit 95446997 authored by Eric Dieckman's avatar Eric Dieckman
Browse files

Add in explicit foreign keys in models

parent 139a1909
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -15,14 +15,19 @@ public class ApplicationDbContext : DbContext

    public DbSet<AppUser> Users => Set<AppUser>();
    public DbSet<Person> People => Set<Person>();
    public DbSet<PaloAltoFirewall> Firewalls => Set<PaloAltoFirewall>();
    public DbSet<PaloAltoFirewall> PaloAltoFirewalls => Set<PaloAltoFirewall>();
    public DbSet<Subnet> Subnets => Set<Subnet>();
    public DbSet<Area> Areas => Set<Area>();
    public DbSet<PaloAltoAccessDomain> AccessDomains => Set<PaloAltoAccessDomain>();
    public DbSet<PaloAltoAccessDomain> PaloAltoAccessDomains => Set<PaloAltoAccessDomain>();
    public DbSet<Vlan> Vlans => Set<Vlan>();
    public DbSet<PaloAltoVsys> Vsyses => Set<PaloAltoVsys>();
    public DbSet<PaloAltoVsys> PaloAltoVsyses => Set<PaloAltoVsys>();
    public DbSet<WiscNicGroup> WiscNicGroups => Set<WiscNicGroup>();
    public DbSet<WiscNicGroupMembershipType> WiscNicGroupMembershipTypes => Set<WiscNicGroupMembershipType>();
    public DbSet<InfobloxDomain> InfobloxDomains => Set<InfobloxDomain>();
    public DbSet<InfobloxGroup> InfobloxGroups => Set<InfobloxGroup>();
    public DbSet<InfobloxNetwork> InfobloxNetworks => Set<InfobloxNetwork>();
    public DbSet<InfobloxRole> InfobloxRoles => Set<InfobloxRole>();
    public DbSet<InfobloxRoleAccess> InfobloxRoleAccess => Set<InfobloxRoleAccess>();

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
+4 −1
Original line number Diff line number Diff line
@@ -20,9 +20,12 @@ public class InfobloxNetworkEntityTypeConfiguration : IEntityTypeConfiguration<I
            .HasColumnName("descr")
            .HasMaxLength(255);

        builder.Property(e => e.SubnetId)
            .HasColumnName(ColumnNames.SubnetId);

        builder.HasOne(e => e.Subnet)
            .WithMany()
            .HasForeignKey(ColumnNames.SubnetId);
            .HasForeignKey(e => e.SubnetId);
    }
}
+16 −4
Original line number Diff line number Diff line
@@ -16,21 +16,33 @@ public class InfobloxRoleAccessEntityTypeConfiguration : IEntityTypeConfiguratio
        builder.Property(e => e.InfobloxRoleAccessId)
            .HasColumnName(ColumnNames.Infoblox.RoleAccessId);

        builder.Property(e => e.RoleId)
            .HasColumnName(ColumnNames.Infoblox.RoleId);

        builder.Property(e => e.GroupId)
            .HasColumnName(ColumnNames.Infoblox.GroupID);

        builder.Property(e => e.NetworkId)
            .HasColumnName(ColumnNames.Infoblox.NetworkId);

        builder.Property(e => e.DomainId)
            .HasColumnName(ColumnNames.Infoblox.DomainId);

        builder.HasOne(e => e.Role)
            .WithMany()
            .HasForeignKey(ColumnNames.Infoblox.RoleId);
            .HasForeignKey(e => e.RoleId);

        builder.HasOne(e => e.Group)
            .WithMany()
            .HasForeignKey(ColumnNames.Infoblox.GroupID);
            .HasForeignKey(e => e.GroupId);

        builder.HasOne(e => e.Network)
            .WithMany()
            .HasForeignKey(ColumnNames.Infoblox.NetworkId);
            .HasForeignKey(e => e.NetworkId);

        builder.HasOne(e => e.Domain)
            .WithMany()
            .HasForeignKey(ColumnNames.Infoblox.DomainId);
            .HasForeignKey(e => e.DomainId);
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -26,27 +26,27 @@ public class LocationEntityTypeConfiguration : IEntityTypeConfiguration<Location
        builder
            .HasMany(l => l.Vlans)
            .WithMany() // You can add .WithMany(v => v.Locations) if you add a Locations collection to Vlan
            .UsingEntity<Dictionary<string, object>>(
            .UsingEntity<LocationVlan>(
                TableNames.LocationVlans,
                j => j
                    .HasOne<Vlan>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.VlanId),
                    .HasForeignKey(e => e.VlanId),
                j => j
                    .HasOne<Location>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.LocationId),
                    .HasForeignKey(e => e.LocationId),
                j =>
                {
                    j.ToTable(TableNames.LocationVlans);

                    j.HasKey(ColumnNames.LocationVlanId);
                    j.HasKey(e => e.LocationVlanId);

                    j.Property<long>(ColumnNames.LocationVlanId);
                    j.Property(e => e.Vlan)
                        .HasColumnName(ColumnNames.VlanId);

                    j.Property<long>(ColumnNames.LocationId);

                    j.Property<long>(ColumnNames.VlanId);
                    j.Property(e => e.Location)
                        .HasColumnName(ColumnNames.LocationId);
                }
            );
    }
+19 −12
Original line number Diff line number Diff line
@@ -27,53 +27,60 @@ public class PaloAltoAccessDomainEntityTypeConfiguration : IEntityTypeConfigurat

        builder.HasMany(e => e.Vsyses)
            .WithMany()
            .UsingEntity<Dictionary<string, object>>(
            .UsingEntity<PaloAltoAccessDomainVsys>(
                TableNames.PaloAltoAccessDomainsToVsyses,
                j => j
                    .HasOne<PaloAltoVsys>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.PaloAlto.VsysId),
                    .HasForeignKey(e => e.VsysId),
                j => j
                    .HasOne<PaloAltoAccessDomain>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.PaloAlto.AccessDomainId),
                    .HasForeignKey(e => e.AccessDomainId),
                j =>
                {
                    j.ToTable(TableNames.PaloAltoAccessDomainsToVsyses);

                    j.HasKey(ColumnNames.PaloAlto.AccessDomainVsysId);

                    j.Property<long>(ColumnNames.PaloAlto.AccessDomainVsysId);
                    j.Property(e => e.AccessDomainVsysId)
                        .HasColumnName(ColumnNames.PaloAlto.AccessDomainVsysId);

                    j.Property<long>(ColumnNames.PaloAlto.AccessDomainId);
                    j.Property(e => e.AccessDomainId)
                        .HasColumnName(ColumnNames.PaloAlto.AccessDomainId);

                    j.Property<long>(ColumnNames.PaloAlto.VsysId);
                    j.Property(e => e.VsysId)
                        .HasColumnName(ColumnNames.PaloAlto.VsysId);
                }
            );

        builder.HasMany(e => e.Firewalls)
            .WithMany()
            .UsingEntity<Dictionary<string, object>>(
            .UsingEntity<PaloAltoAccessDomainFirewall>(
                TableNames.PaloAltoAccessDomainsToFirewalls,
                j => j
                    .HasOne<PaloAltoFirewall>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.PaloAlto.FirewallId),
                    .HasForeignKey(e => e.FirewallId),
                j => j
                    .HasOne<PaloAltoAccessDomain>()
                    .WithMany()
                    .HasForeignKey(ColumnNames.PaloAlto.AccessDomainId),
                    .HasForeignKey(e => e.AccessDomainId),
                j =>
                {
                    j.ToTable(TableNames.PaloAltoAccessDomainsToVsyses);

                    j.HasKey(ColumnNames.PaloAlto.AccessDomainFirewallId);

                    j.Property<long>(ColumnNames.PaloAlto.AccessDomainFirewallId);
                    j.Property(e => e.AccessDomainFirewallId)
                        .HasColumnName(ColumnNames.PaloAlto.AccessDomainFirewallId);

                    j.Property<long>(ColumnNames.PaloAlto.FirewallId);
                    j.Property(e => e.FirewallId)
                        .HasColumnName(ColumnNames.PaloAlto.FirewallId);

                    j.Property<long>(ColumnNames.PaloAlto.AccessDomainId);

                    j.Property(e => e.AccessDomainId)
                        .HasColumnName(ColumnNames.PaloAlto.AccessDomainId);
                }
            );
    }
Loading