/// <summary> /// Initializes a new instance of the <see cref="EFCoreDataContext"/> class. /// </summary> /// <param name="modelBuilderFactory">The model builder factory.</param> /// <param name="dataSource">The data source.</param> /// <param name="options">The options.</param> public EFCoreDataContext(IEFCoreModelBuilderFactory modelBuilderFactory, IEntityMapFactory mapFactory, string dataSource, DbContextOptions options) : base(options) { _modelBuilderFactory = modelBuilderFactory; this.mapFactory = mapFactory; _dataSource = dataSource; }
/// <summary> /// Builds the model mappings. /// </summary> /// <param name="modelBuilder">The model builder.</param> public void AppendModelMappings(ModelBuilder modelBuilder, IEntityMapFactory mapFactory) { var types = this._modelAssemblies.SelectMany(x => x.GetTypes()); var mapTypes = from t in types where t.BaseType != null && t.BaseType != typeof(object) && typeof(TEntity).IsAssignableFrom(t) && !t.IsAbstract && ApplyDataSourceFilter(t) select t; foreach (var mapType in mapTypes) { var binderMethod = modelBuilder.GetType() .GetMethods(BindingFlags.Instance | BindingFlags.Public) .First(x => x.Name == nameof(modelBuilder.Entity) && x.IsGenericMethod) .MakeGenericMethod(mapType); var genericEntityTypeBuilder = binderMethod.Invoke(modelBuilder, new object[] { }) as EntityTypeBuilder; this.ApplyAttributeSpecs(mapType, genericEntityTypeBuilder); var maps = mapFactory.GetMapsFor(mapType); foreach (var map in maps) { map.Configure(genericEntityTypeBuilder); } } }
/// <summary> /// Initializes a new instance of the <see cref="EFCoreAsyncWorkAroundDbContext"/> class. /// </summary> /// <param name="modelBuilderFactory">The model builder factory.</param> /// <param name="dataSource">The data source.</param> /// <param name="options">The options.</param> public EFCoreAsyncWorkAroundDbContext(IEFCoreModelBuilderFactory modelBuilderFactory, IEntityMapFactory mapperFactory, string dataSource, DbContextOptions options) : base(modelBuilderFactory, mapperFactory, dataSource, options) { _modelBuilderFactory = modelBuilderFactory; _dataSource = dataSource; }