Collin M. Barrett 2018-02-07 17:59:26 -06:00
parent 9c40851378
commit f0e927811d
11 changed files with 18 additions and 80 deletions

View file

@ -18,6 +18,7 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="Migrations\" />
<Folder Include="wwwroot\" />
</ItemGroup>

View file

@ -10,7 +10,7 @@
namespace FilterLists.Api.Migrations
{
[DbContext(typeof(FilterListsDbContext))]
[Migration("20180206183743_InitialReCreate")]
[Migration("20180207235556_InitialReCreate")]
partial class InitialReCreate
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -97,9 +97,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("FilterListId", "LanguageId");
b.HasIndex("LanguageId", "FilterListId")
.IsUnique();
b.ToTable("filterlists_languages");
});
@ -115,9 +112,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("FilterListId", "MaintainerId");
b.HasIndex("MaintainerId", "FilterListId")
.IsUnique();
b.ToTable("filterlists_maintainers");
});
@ -133,9 +127,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("ForkFilterListId", "UpstreamFilterListId");
b.HasIndex("UpstreamFilterListId", "ForkFilterListId")
.IsUnique();
b.ToTable("forks");
});
@ -151,9 +142,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("MergeFilterListId", "UpstreamFilterListId");
b.HasIndex("UpstreamFilterListId", "MergeFilterListId")
.IsUnique();
b.ToTable("merges");
});
@ -169,9 +157,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("SnapshotId", "RuleId");
b.HasIndex("RuleId", "SnapshotId")
.IsUnique();
b.ToTable("snapshots_rules");
});
@ -187,9 +172,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder)
b.HasKey("SoftwareId", "SyntaxId");
b.HasIndex("SyntaxId", "SoftwareId")
.IsUnique();
b.ToTable("software_syntaxes");
});

View file

@ -348,46 +348,10 @@ protected override void Up(MigrationBuilder migrationBuilder)
table: "filterlists",
column: "SyntaxId");
migrationBuilder.CreateIndex(
name: "IX_filterlists_languages_LanguageId_FilterListId",
table: "filterlists_languages",
columns: new[] { "LanguageId", "FilterListId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_filterlists_maintainers_MaintainerId_FilterListId",
table: "filterlists_maintainers",
columns: new[] { "MaintainerId", "FilterListId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_forks_UpstreamFilterListId_ForkFilterListId",
table: "forks",
columns: new[] { "UpstreamFilterListId", "ForkFilterListId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_merges_UpstreamFilterListId_MergeFilterListId",
table: "merges",
columns: new[] { "UpstreamFilterListId", "MergeFilterListId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_snapshots_FilterListId",
table: "snapshots",
column: "FilterListId");
migrationBuilder.CreateIndex(
name: "IX_snapshots_rules_RuleId_SnapshotId",
table: "snapshots_rules",
columns: new[] { "RuleId", "SnapshotId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_software_syntaxes_SyntaxId_SoftwareId",
table: "software_syntaxes",
columns: new[] { "SyntaxId", "SoftwareId" },
unique: true);
}
protected override void Down(MigrationBuilder migrationBuilder)

View file

@ -96,9 +96,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("FilterListId", "LanguageId");
b.HasIndex("LanguageId", "FilterListId")
.IsUnique();
b.ToTable("filterlists_languages");
});
@ -114,9 +111,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("FilterListId", "MaintainerId");
b.HasIndex("MaintainerId", "FilterListId")
.IsUnique();
b.ToTable("filterlists_maintainers");
});
@ -132,9 +126,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("ForkFilterListId", "UpstreamFilterListId");
b.HasIndex("UpstreamFilterListId", "ForkFilterListId")
.IsUnique();
b.ToTable("forks");
});
@ -150,9 +141,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("MergeFilterListId", "UpstreamFilterListId");
b.HasIndex("UpstreamFilterListId", "MergeFilterListId")
.IsUnique();
b.ToTable("merges");
});
@ -168,9 +156,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("SnapshotId", "RuleId");
b.HasIndex("RuleId", "SnapshotId")
.IsUnique();
b.ToTable("snapshots_rules");
});
@ -186,9 +171,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasKey("SoftwareId", "SyntaxId");
b.HasIndex("SyntaxId", "SoftwareId")
.IsUnique();
b.ToTable("software_syntaxes");
});

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<FilterListLanguage> entityTypeB
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("filterlists_languages");
entityTypeBuilder.HasKey(x => new {x.FilterListId, x.LanguageId});
entityTypeBuilder.HasIndex(x => new {x.LanguageId, x.FilterListId }).IsUnique();
entityTypeBuilder.HasOne(x => x.FilterList)
.WithMany(x => x.FilterListLanguages)
.HasForeignKey(x => x.FilterListId);

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<FilterListMaintainer> entityTyp
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("filterlists_maintainers");
entityTypeBuilder.HasKey(x => new {x.FilterListId, x.MaintainerId});
entityTypeBuilder.HasIndex(x => new {x.MaintainerId, x.FilterListId }).IsUnique();
entityTypeBuilder.HasOne(x => x.FilterList)
.WithMany(x => x.FilterListMaintainers)
.HasForeignKey(x => x.FilterListId);

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<Fork> entityTypeBuilder)
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("forks");
entityTypeBuilder.HasKey(x => new {x.ForkFilterListId, x.UpstreamFilterListId});
entityTypeBuilder.HasIndex(x => new {x.UpstreamFilterListId, x.ForkFilterListId }).IsUnique();
entityTypeBuilder.HasOne(x => x.ForkFilterList)
.WithMany(x => x.ForkFilterLists)
.HasForeignKey(x => x.ForkFilterListId);

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<Merge> entityTypeBuilder)
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("merges");
entityTypeBuilder.HasKey(x => new {x.MergeFilterListId, x.UpstreamFilterListId});
entityTypeBuilder.HasIndex(x => new {x.UpstreamFilterListId, x.MergeFilterListId }).IsUnique();
entityTypeBuilder.HasOne(x => x.MergeFilterList)
.WithMany(x => x.MergeFilterLists)
.HasForeignKey(x => x.MergeFilterListId);

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<SnapshotRule> entityTypeBuilder
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("snapshots_rules");
entityTypeBuilder.HasKey(x => new {x.SnapshotId, x.RuleId});
entityTypeBuilder.HasIndex(x => new {x.RuleId, x.SnapshotId }).IsUnique();
entityTypeBuilder.HasOne(x => x.Snapshot)
.WithMany(x => x.SnapshotRules)
.HasForeignKey(x => x.SnapshotId);

View file

@ -11,7 +11,6 @@ public override void Configure(EntityTypeBuilder<SoftwareSyntax> entityTypeBuild
base.Configure(entityTypeBuilder);
entityTypeBuilder.ToTable("software_syntaxes");
entityTypeBuilder.HasKey(x => new {x.SoftwareId, x.SyntaxId});
entityTypeBuilder.HasIndex(x => new {x.SyntaxId, x.SoftwareId }).IsUnique();
entityTypeBuilder.HasOne(x => x.Software)
.WithMany(x => x.SoftwareSyntaxes)
.HasForeignKey(x => x.SoftwareId);

View file

@ -1,8 +1,10 @@
using FilterLists.Data.Entities;
using System.Linq;
using FilterLists.Data.Entities;
using FilterLists.Data.Entities.Junctions;
using FilterLists.Data.EntityTypeConfigurations;
using FilterLists.Data.EntityTypeConfigurations.Junctions;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
namespace FilterLists.Data
{
@ -17,6 +19,19 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
ApplyConfigurationsEntities(modelBuilder);
ApplyConfigurationsJunctions(modelBuilder);
SelectivelyOmitConventions(modelBuilder);
}
//TODO: update when official API supported
//https://github.com/aspnet/EntityFrameworkCore/issues/10855#issuecomment-363219253
//https://github.com/aspnet/EntityFrameworkCore/issues/7605
private static void SelectivelyOmitConventions(ModelBuilder modelBuilder)
{
((Model)modelBuilder.Model).ConventionDispatcher.StartBatch();
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
foreach (var index in entityType.GetIndexes().ToList())
if (index.DeclaringEntityType.Name.Contains("Junctions"))
entityType.RemoveIndex(index.Properties);
}
#region Entities