From 4a533c5c0ffed43bbacc16e59e2028cfdc6ce266 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sat, 4 Nov 2017 11:16:40 -0500 Subject: [PATCH] add FilterListMaintainer --- ...61431_add FilterListMaintainer.Designer.cs | 472 ++++++++++++++++++ ...20171104161431_add FilterListMaintainer.cs | 81 +++ .../FilterListsDbContextModelSnapshot.cs | 42 +- src/FilterLists.Data/Entities/FilterList.cs | 2 +- .../Entities/FilterListMaintainer.cs | 11 + src/FilterLists.Data/Entities/Maintainer.cs | 2 +- .../FilterListMaintainerTypeConfiguration.cs | 17 + src/FilterLists.Data/FilterListsDbContext.cs | 1 + 8 files changed, 618 insertions(+), 10 deletions(-) create mode 100644 src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.Designer.cs create mode 100644 src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.cs create mode 100644 src/FilterLists.Data/Entities/FilterListMaintainer.cs create mode 100644 src/FilterLists.Data/EntityTypeConfigurations/FilterListMaintainerTypeConfiguration.cs diff --git a/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.Designer.cs b/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.Designer.cs new file mode 100644 index 000000000..6a7e76079 --- /dev/null +++ b/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.Designer.cs @@ -0,0 +1,472 @@ +// +using FilterLists.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; + +namespace FilterLists.Api.Migrations +{ + [DbContext(typeof(FilterListsDbContext))] + [Migration("20171104161431_add FilterListMaintainer")] + partial class addFilterListMaintainer + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452"); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("Description") + .HasMaxLength(4096); + + b.Property("DescriptionSourceUrl") + .HasMaxLength(2083); + + b.Property("DiscontinuedDate"); + + b.Property("DonateUrl") + .HasMaxLength(2083); + + b.Property("EmailAddress") + .HasMaxLength(126); + + b.Property("ForumUrl") + .HasMaxLength(2083); + + b.Property("HomeUrl") + .HasMaxLength(2083); + + b.Property("IssuesUrl") + .HasMaxLength(2083); + + b.Property("LicenseId"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(126); + + b.Property("SubmissionUrl") + .HasMaxLength(2083); + + b.Property("SyntaxId"); + + b.Property("ViewUrl") + .HasMaxLength(2083); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("filterlists"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListLanguage", b => + { + b.Property("FilterListId"); + + b.Property("LanguageId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "LanguageId"); + + b.HasIndex("LanguageId"); + + b.ToTable("filterlists_languages"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListMaintainer", b => + { + b.Property("FilterListId"); + + b.Property("MaintainerId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "MaintainerId"); + + b.HasIndex("MaintainerId"); + + b.ToTable("filterlists_maintainers"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListRule", b => + { + b.Property("FilterListId"); + + b.Property("RuleId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "RuleId"); + + b.HasIndex("RuleId"); + + b.ToTable("filterlists_rules"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Fork", b => + { + b.Property("ForkFilterListId"); + + b.Property("UpstreamFilterListId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("ForkFilterListId", "UpstreamFilterListId"); + + b.HasIndex("UpstreamFilterListId"); + + b.ToTable("forks"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("Iso6391") + .HasMaxLength(2); + + b.Property("Iso6392") + .HasMaxLength(3); + + b.Property("Iso6392B") + .HasMaxLength(3); + + b.Property("Iso6392T") + .HasMaxLength(3); + + b.Property("Iso6393") + .HasMaxLength(3); + + b.Property("LocalName") + .HasMaxLength(126); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasMaxLength(126); + + b.HasKey("Id"); + + b.ToTable("languages"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DescriptionUrl") + .HasMaxLength(2083); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(126); + + b.Property("PermissiveAdaptation"); + + b.Property("PermissiveCommercial"); + + b.HasKey("Id"); + + b.ToTable("licenses"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Maintainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("EmailAddress") + .HasMaxLength(126); + + b.Property("HomeUrl") + .HasMaxLength(2083); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(126); + + b.Property("TwitterHandle") + .HasMaxLength(126); + + b.HasKey("Id"); + + b.ToTable("maintainers"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Merge", b => + { + b.Property("MergeFilterListId"); + + b.Property("UpstreamFilterListId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("MergeFilterListId", "UpstreamFilterListId"); + + b.HasIndex("UpstreamFilterListId"); + + b.ToTable("merges"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Rule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Raw") + .HasMaxLength(2083); + + b.HasKey("Id"); + + b.ToTable("rules"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Software", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DownloadUrl") + .HasMaxLength(2083); + + b.Property("HomeUrl") + .HasMaxLength(2083); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .HasMaxLength(126); + + b.HasKey("Id"); + + b.ToTable("software"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.SoftwareSyntax", b => + { + b.Property("SoftwareId"); + + b.Property("SyntaxId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("SoftwareId", "SyntaxId"); + + b.HasIndex("SyntaxId"); + + b.ToTable("software_syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Syntax", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("DefinitionUrl") + .HasMaxLength(2083); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(126); + + b.HasKey("Id"); + + b.ToTable("syntaxes"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterList", b => + { + b.HasOne("FilterLists.Data.Entities.License") + .WithMany("FilterLists") + .HasForeignKey("LicenseId"); + + b.HasOne("FilterLists.Data.Entities.Syntax") + .WithMany("FilterLists") + .HasForeignKey("SyntaxId"); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListLanguage", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListLanguages") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Language", "Language") + .WithMany("FilterListLanguages") + .HasForeignKey("LanguageId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListMaintainer", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListMaintainers") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Maintainer", "Maintainer") + .WithMany("FilterListMaintainers") + .HasForeignKey("MaintainerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.FilterListRule", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListRules") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Rule", "Rule") + .WithMany("FilterListRules") + .HasForeignKey("RuleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Fork", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "ForkFilterList") + .WithMany() + .HasForeignKey("ForkFilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.FilterList", "UpstreamFilterList") + .WithMany() + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.Merge", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "MergeFilterList") + .WithMany() + .HasForeignKey("MergeFilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.FilterList", "UpstreamFilterList") + .WithMany() + .HasForeignKey("UpstreamFilterListId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("FilterLists.Data.Entities.SoftwareSyntax", b => + { + b.HasOne("FilterLists.Data.Entities.Software", "Software") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SoftwareId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Syntax", "Syntax") + .WithMany("SoftwareSyntaxes") + .HasForeignKey("SyntaxId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.cs b/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.cs new file mode 100644 index 000000000..ce63c7648 --- /dev/null +++ b/src/FilterLists.Api/Migrations/20171104161431_add FilterListMaintainer.cs @@ -0,0 +1,81 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace FilterLists.Api.Migrations +{ + public partial class addFilterListMaintainer : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_filterlists_maintainers_MaintainerId", + table: "filterlists"); + + migrationBuilder.DropIndex( + name: "IX_filterlists_MaintainerId", + table: "filterlists"); + + migrationBuilder.DropColumn( + name: "MaintainerId", + table: "filterlists"); + + migrationBuilder.CreateTable( + name: "filterlists_maintainers", + columns: table => new + { + FilterListId = table.Column(type: "int", nullable: false), + MaintainerId = table.Column(type: "int", nullable: false), + CreatedDateUtc = table.Column(type: "TIMESTAMP", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ModifiedDateUtc = table.Column(type: "TIMESTAMP", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_filterlists_maintainers", x => new { x.FilterListId, x.MaintainerId }); + table.ForeignKey( + name: "FK_filterlists_maintainers_filterlists_FilterListId", + column: x => x.FilterListId, + principalTable: "filterlists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_filterlists_maintainers_maintainers_MaintainerId", + column: x => x.MaintainerId, + principalTable: "maintainers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_filterlists_maintainers_MaintainerId", + table: "filterlists_maintainers", + column: "MaintainerId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "filterlists_maintainers"); + + migrationBuilder.AddColumn( + name: "MaintainerId", + table: "filterlists", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_filterlists_MaintainerId", + table: "filterlists", + column: "MaintainerId"); + + migrationBuilder.AddForeignKey( + name: "FK_filterlists_maintainers_MaintainerId", + table: "filterlists", + column: "MaintainerId", + principalTable: "maintainers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs index 15dd59731..14fbc023d 100644 --- a/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs +++ b/src/FilterLists.Api/Migrations/FilterListsDbContextModelSnapshot.cs @@ -54,8 +54,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("LicenseId"); - b.Property("MaintainerId"); - b.Property("ModifiedDateUtc") .ValueGeneratedOnAddOrUpdate() .HasColumnType("TIMESTAMP"); @@ -76,8 +74,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasIndex("LicenseId"); - b.HasIndex("MaintainerId"); - b.HasIndex("SyntaxId"); b.ToTable("filterlists"); @@ -104,6 +100,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("filterlists_languages"); }); + modelBuilder.Entity("FilterLists.Data.Entities.FilterListMaintainer", b => + { + b.Property("FilterListId"); + + b.Property("MaintainerId"); + + b.Property("CreatedDateUtc") + .ValueGeneratedOnAdd() + .HasColumnType("TIMESTAMP"); + + b.Property("ModifiedDateUtc") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("TIMESTAMP"); + + b.HasKey("FilterListId", "MaintainerId"); + + b.HasIndex("MaintainerId"); + + b.ToTable("filterlists_maintainers"); + }); + modelBuilder.Entity("FilterLists.Data.Entities.FilterListRule", b => { b.Property("FilterListId"); @@ -366,10 +383,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .WithMany("FilterLists") .HasForeignKey("LicenseId"); - b.HasOne("FilterLists.Data.Entities.Maintainer") - .WithMany("FilterLists") - .HasForeignKey("MaintainerId"); - b.HasOne("FilterLists.Data.Entities.Syntax") .WithMany("FilterLists") .HasForeignKey("SyntaxId"); @@ -388,6 +401,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) .OnDelete(DeleteBehavior.Cascade); }); + modelBuilder.Entity("FilterLists.Data.Entities.FilterListMaintainer", b => + { + b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") + .WithMany("FilterListMaintainers") + .HasForeignKey("FilterListId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("FilterLists.Data.Entities.Maintainer", "Maintainer") + .WithMany("FilterListMaintainers") + .HasForeignKey("MaintainerId") + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity("FilterLists.Data.Entities.FilterListRule", b => { b.HasOne("FilterLists.Data.Entities.FilterList", "FilterList") diff --git a/src/FilterLists.Data/Entities/FilterList.cs b/src/FilterLists.Data/Entities/FilterList.cs index 0a72429ef..7c5a8af87 100644 --- a/src/FilterLists.Data/Entities/FilterList.cs +++ b/src/FilterLists.Data/Entities/FilterList.cs @@ -14,9 +14,9 @@ public class FilterList : BaseEntity public string HomeUrl { get; set; } public string IssuesUrl { get; set; } public ICollection FilterListLanguages { get; set; } + public ICollection FilterListMaintainers { get; set; } public ICollection FilterListRules { get; set; } public int? LicenseId { get; set; } - public int? MaintainerId { get; set; } public string Name { get; set; } public string SubmissionUrl { get; set; } public int? SyntaxId { get; set; } diff --git a/src/FilterLists.Data/Entities/FilterListMaintainer.cs b/src/FilterLists.Data/Entities/FilterListMaintainer.cs new file mode 100644 index 000000000..f76c8159c --- /dev/null +++ b/src/FilterLists.Data/Entities/FilterListMaintainer.cs @@ -0,0 +1,11 @@ +namespace FilterLists.Data.Entities +{ + public class FilterListMaintainer : BaseEntity + { + public int FilterListId { get; set; } + public FilterList FilterList { get; set; } + + public int MaintainerId { get; set; } + public Maintainer Maintainer { get; set; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Data/Entities/Maintainer.cs b/src/FilterLists.Data/Entities/Maintainer.cs index 7772f45de..da02ea818 100644 --- a/src/FilterLists.Data/Entities/Maintainer.cs +++ b/src/FilterLists.Data/Entities/Maintainer.cs @@ -5,7 +5,7 @@ namespace FilterLists.Data.Entities public class Maintainer : BaseEntity { public string EmailAddress { get; set; } - public ICollection FilterLists { get; set; } + public ICollection FilterListMaintainers { get; set; } public string HomeUrl { get; set; } public string Name { get; set; } public string TwitterHandle { get; set; } diff --git a/src/FilterLists.Data/EntityTypeConfigurations/FilterListMaintainerTypeConfiguration.cs b/src/FilterLists.Data/EntityTypeConfigurations/FilterListMaintainerTypeConfiguration.cs new file mode 100644 index 000000000..e49fe40c2 --- /dev/null +++ b/src/FilterLists.Data/EntityTypeConfigurations/FilterListMaintainerTypeConfiguration.cs @@ -0,0 +1,17 @@ +using FilterLists.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace FilterLists.Data.EntityTypeConfigurations +{ + public class FilterListMaintainerTypeConfiguration : BaseEntityTypeConfiguration + { + public override void Configure(EntityTypeBuilder entityTypeBuilder) + { + entityTypeBuilder.ToTable("filterlists_maintainers"); + entityTypeBuilder.HasKey(x => new {x.FilterListId, x.MaintainerId}); + entityTypeBuilder.Ignore(x => x.Id); + base.Configure(entityTypeBuilder); + } + } +} \ No newline at end of file diff --git a/src/FilterLists.Data/FilterListsDbContext.cs b/src/FilterLists.Data/FilterListsDbContext.cs index 9bb027475..8405de550 100644 --- a/src/FilterLists.Data/FilterListsDbContext.cs +++ b/src/FilterLists.Data/FilterListsDbContext.cs @@ -30,6 +30,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.ApplyConfiguration(new SyntaxTypeConfiguration()); modelBuilder.ApplyConfiguration(new FilterListLanguageTypeConfiguration()); + modelBuilder.ApplyConfiguration(new FilterListMaintainerTypeConfiguration()); modelBuilder.ApplyConfiguration(new FilterListRuleTypeConfiguration()); modelBuilder.ApplyConfiguration(new ForkTypeConfiguration()); modelBuilder.ApplyConfiguration(new MergeTypeConfiguration());