示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }
示例#4
0
        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; });
            }));
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
            }));
        }