public static ModelBuilder ApplyEntityConfiguration(this ModelBuilder builder, Action <EntityConfigurationOptions> configureOptions) { Ensure.NotNull(builder, nameof(builder)); var options = new EntityConfigurationOptions(); configureOptions?.Invoke(options); foreach (var entityType in builder.GetEntityTypes(typeof(Entity <,>))) { builder.Entity(entityType.ClrType, entityTypeBuilder => { entityTypeBuilder.HasKey(nameof(Entity.Id)); }); } if (options.Configure != null) { foreach (var entityType in builder.GetEntityTypes(typeof(Entity <>))) { builder.Entity(entityType.ClrType, entityTypeBuilder => { options.Configure.Invoke(entityType, entityTypeBuilder); }); } } return(builder); }
public static DbModelBuilder ApplyEntityConfiguration(this DbModelBuilder builder, Action <EntityConfigurationOptions> configureOptions) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var options = new EntityConfigurationOptions(); configureOptions?.Invoke(options); var test = builder.Types(); builder.Types().Where(x => typeof(Entity <,>).IsAssignableFromGenericType(x)).Configure(x => { x.HasKey(nameof(Entity.Id)); }); if (options.Configure != null) { builder.Types().Where(x => typeof(Entity <>).IsAssignableFromGenericType(x)).Configure(x => { options.Configure.Invoke(x); }); } return(builder); }
/// <summary> /// Registers and configures the <see cref="EntityConfigurationProvider{T}"/> using some default values. /// </summary> /// <param name="webHostBuilder">A builder for <see cref="IWebHost"/>.</param> /// <param name="configureAction">The <see cref="EntityConfigurationOptions"/> to use.</param> /// <returns>The <see cref="IHostBuilder"/>.</returns> public static IWebHostBuilder UseDatabaseConfiguration <TContext>(this IWebHostBuilder webHostBuilder, Action <EntityConfigurationOptions, IConfiguration> configureAction) where TContext : DbContext, IAppSettingsDbContext { return(webHostBuilder.ConfigureAppConfiguration((hostBuilderContext, configurationBuilder) => { var options = new EntityConfigurationOptions(); configureAction?.Invoke(options, configurationBuilder.Build()); var result = options.Validate(); if (!result.Succedded) { throw new ArgumentException(result.Error); } configurationBuilder.Add(new EntityConfigurationSource <TContext>(options)); }) .ConfigureServices((context, services) => { services.AddTransient <IAppSettingsDbContext, TContext>(); })); }