move fluent to entity maps per entity

ref #144
This commit is contained in:
Collin M. Barrett 2017-10-27 07:51:59 -05:00
parent a4ece09905
commit bfff929ce5
5 changed files with 69 additions and 10 deletions

View file

@ -1,4 +1,8 @@
using FilterLists.Data.Entities;
using System;
using System.Linq;
using System.Reflection;
using FilterLists.Data.Entities;
using FilterLists.Data.EntityMaps;
using Microsoft.EntityFrameworkCore;
namespace FilterLists.Data.Contexts
@ -16,15 +20,19 @@ public FilterListsDbContext(DbContextOptions options)
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<FilterList>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
modelBuilder.Entity<Maintainer>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
modelBuilder.Entity<Language>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
RegisterMaps(modelBuilder);
}
private static void RegisterMaps(ModelBuilder modelBuilder)
{
var entityMaps = typeof(FilterList).GetTypeInfo().Assembly.GetTypes().Where(type =>
!string.IsNullOrWhiteSpace(type.Namespace) && typeof(IEntityMap).IsAssignableFrom(type) &&
type.IsClass)
.ToList();
foreach (var entityMap in entityMaps)
Activator.CreateInstance(entityMap, BindingFlags.Public | BindingFlags.Instance, null,
new object[] {modelBuilder}, null);
}
}
}

View file

@ -0,0 +1,15 @@
using FilterLists.Data.Entities;
using Microsoft.EntityFrameworkCore;
namespace FilterLists.Data.EntityMaps
{
public class FilterListMap : IEntityMap
{
public FilterListMap(ModelBuilder modelBuilder)
{
modelBuilder.Entity<FilterList>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
}
}
}

View file

@ -0,0 +1,6 @@
namespace FilterLists.Data.EntityMaps
{
public interface IEntityMap
{
}
}

View file

@ -0,0 +1,15 @@
using FilterLists.Data.Entities;
using Microsoft.EntityFrameworkCore;
namespace FilterLists.Data.EntityMaps
{
public class LanguageMap : IEntityMap
{
public LanguageMap(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Language>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
}
}
}

View file

@ -0,0 +1,15 @@
using FilterLists.Data.Entities;
using Microsoft.EntityFrameworkCore;
namespace FilterLists.Data.EntityMaps
{
public class MaintainerMap : IEntityMap
{
public MaintainerMap(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Maintainer>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
}
}
}