DocSpace-buildtools/common/ASC.Core.Common/EF/Model/ModelBuilderWrapper.cs

57 lines
1.6 KiB
C#
Raw Normal View History

2020-09-02 15:23:39 +00:00
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace ASC.Core.Common.EF.Model
{
public class ModelBuilderWrapper
{
ModelBuilder ModelBuilder { get; set; }
Provider Provider { get; set; }
Dictionary<Provider, List<Action<ModelBuilder>>> Actions { get; set; }
private ModelBuilderWrapper(ModelBuilder modelBuilder, Provider provider)
{
ModelBuilder = modelBuilder;
Provider = provider;
Actions = new Dictionary<Provider, List<Action<ModelBuilder>>>();
}
public static ModelBuilderWrapper From(ModelBuilder modelBuilder, Provider provider)
{
return new ModelBuilderWrapper(modelBuilder, provider);
}
public ModelBuilderWrapper Add(Action<ModelBuilder> action, Provider provider)
{
if (!Actions.ContainsKey(provider))
{
Actions.Add(provider, new List<Action<ModelBuilder>>());
}
Actions[provider].Add(action);
return this;
}
2020-10-05 09:56:07 +00:00
public ModelBuilderWrapper HasData<T>(params T[] data) where T : class
{
ModelBuilder.Entity<T>().HasData(data);
return this;
}
2020-09-02 15:23:39 +00:00
public void Finish()
{
if (Actions.ContainsKey(Provider))
{
foreach (var action in Actions[Provider])
{
action(ModelBuilder);
}
}
}
}
}