public static IIocBuilder UseRepositoryRegistrarInAssembly([NotNull] this IIocBuilder builder, [NotNull] Assembly assembly) { Check.NotNull(assembly, nameof(assembly)); List <Type> dbContextTypes = typeof(StoveDbContext).AssignedTypesInAssembly(assembly).ToList(); dbContextTypes.ForEach(type => EfRepositoryRegistrar.RegisterRepositories(type, builder)); return(builder); }
public EntityFrameworkGenericRepositoryRegistrar_Tests() { var fakeBaseDbContextProvider = Substitute.For <IDbContextProvider <MyBaseDbContext> >(); var fakeMainDbContextProvider = Substitute.For <IDbContextProvider <MyMainDbContext> >(); var fakeModuleDbContextProvider = Substitute.For <IDbContextProvider <MyModuleDbContext> >(); Building(builder => { builder.RegisterServices(r => r.Register(context => fakeBaseDbContextProvider)); builder.RegisterServices(r => r.Register(context => fakeMainDbContextProvider)); builder.RegisterServices(r => r.Register(context => fakeModuleDbContextProvider)); EfRepositoryRegistrar.RegisterRepositories(typeof(MyModuleDbContext), builder); EfRepositoryRegistrar.RegisterRepositories(typeof(MyMainDbContext), builder); }).Ok(); }
public static IIocBuilder UseRepositoryRegistrarInAssembly([NotNull] this IIocBuilder builder, [NotNull] Assembly assembly) { Check.NotNull(assembly, nameof(assembly)); builder.RegisterServices(r => { r.OnRegistering += (sender, args) => { if (typeof(StoveDbContext).IsAssignableFrom(args.ImplementationType)) { EfRepositoryRegistrar.RegisterRepositories(args.ImplementationType, builder); } }; }); return(builder); }
public static IIocBuilder UseStoveEntityFramework([NotNull] this IIocBuilder builder) { return(builder.RegisterServices(r => { r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); r.Register <IUnitOfWorkFilterExecuter, IEfUnitOfWorkFilterExecuter, EfDynamicFiltersUnitOfWorkFilterExecuter>(); r.RegisterGeneric(typeof(IDbContextProvider <>), typeof(UnitOfWorkDbContextProvider <>)); r.Register <IUnitOfWorkDefaultOptions, UnitOfWorkDefaultOptions>(Lifetime.Singleton); var ormRegistrars = new List <ISecondaryOrmRegistrar>(); List <Type> dbContextTypes = typeof(StoveDbContext).AssignedTypes().ToList(); dbContextTypes.ForEach(type => { EfRepositoryRegistrar.RegisterRepositories(type, builder); ormRegistrars.Add(new EfBasedSecondaryOrmRegistrar(builder, type, DbContextHelper.GetEntityTypeInfos, EntityHelper.GetPrimaryKeyType)); }); r.UseBuilder(cb => { cb.Properties[StoveConsts.OrmRegistrarContextKey] = ormRegistrars; }); })); }
private void RegisterGenericRepositories() { var dbContextTypes = _typeFinder.GetAllTypes(type => type.IsPublic && !type.IsAbstract && type.IsClass && typeof(DbContext).IsAssignableFrom(type) ); if (dbContextTypes.IsNullOrEmpty()) { return; } foreach (var dbContextType in dbContextTypes) { EfRepositoryRegistrar.RegisterForDbContext(dbContextType, IocManager); } }
public static IIocBuilder UseStoveEntityFramework([NotNull] this IIocBuilder builder) { return(builder.RegisterServices(r => { var ormRegistrars = new List <ISecondaryOrmRegistrar>(); r.OnRegistering += (sender, args) => { if (typeof(StoveDbContext).IsAssignableFrom(args.ImplementationType)) { EfRepositoryRegistrar.RegisterRepositories(args.ImplementationType, builder); ormRegistrars.Add(new EfBasedSecondaryOrmRegistrar(builder, args.ImplementationType, DbContextHelper.GetEntityTypeInfos, EntityHelper.GetPrimaryKeyType)); args.ContainerBuilder.Properties[StoveConsts.OrmRegistrarContextKey] = ormRegistrars; } }; r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); r.Register <IUnitOfWorkFilterExecuter, IEfUnitOfWorkFilterExecuter, EfDynamicFiltersUnitOfWorkFilterExecuter>(); r.RegisterGeneric(typeof(IDbContextProvider <>), typeof(UnitOfWorkDbContextProvider <>)); r.Register <IUnitOfWorkDefaultOptions, UnitOfWorkDefaultOptions>(Lifetime.Singleton); })); }