Esempio n. 1
0
        public static void RegisterEntityFramework(this Container container, bool isGreenfield = false)
        {
            if (isGreenfield)
            {
                container.Register<ICustomizeDb, SqlServerScriptsCustomizer>();
                container.Register<IDatabaseInitializer<EntityDbContext>, GreenfieldDbInitializer>();
            }
            else
            {
                container.Register<ICustomizeDb, VanillaDbCustomizer>();
                container.Register<IDatabaseInitializer<EntityDbContext>, BrownfieldDbInitializer>();
            }

            container.Register<ICreateDbModel, DefaultDbModelCreator>();
            container.RegisterInitializer<EntityDbContext>(container.InjectProperties);

            // register the lifestyle
            var lifestyle = Lifestyle.CreateHybrid(
                lifestyleSelector: () => HttpContext.Current != null,
                trueLifestyle: new WebRequestLifestyle(),
                falseLifestyle: new LifetimeScopeLifestyle()
            );

            // register the db context & its 3 interfaces
            var contextRegistration = lifestyle.CreateRegistration<EntityDbContext, EntityDbContext>(container);
            container.AddRegistration(typeof(EntityDbContext), contextRegistration);
            container.AddRegistration(typeof(IUnitOfWork), contextRegistration);
            container.AddRegistration(typeof(IWriteEntities), contextRegistration);
            container.AddRegistration(typeof(IReadEntities), contextRegistration);
        }
        public static void RegisterMvcControllers(this Container container, params Assembly[] assemblies)
        {
            foreach (Type controllerType in GetControllerTypesToRegister(container, assemblies))
            {
                Registration registration = Lifestyle.Transient.CreateRegistration(controllerType, container);

                registration.SuppressDiagnosticWarning(DiagnosticType.DisposableTransientComponent,
                    justification:
                        "MVC's DefaultControllerFactory disposes the controller when the web request ends.");

                container.AddRegistration(controllerType, registration);
            }
        }
 private static void RegisterViewComponentTypes(this Container container, IEnumerable<Type> types)
 {
     foreach (Type type in types.ToArray())
     {
         container.AddRegistration(type, CreateConcreteRegistration(container, type));
     }
 }
        private static void RegisterControllerTypes(this Container container, IEnumerable<Type> types)
        {
            foreach (Type type in types.ToArray())
            {
                var registration = CreateConcreteRegistration(container, type);

                // Microsoft.AspNetCore.Mvc.Controller implements IDisposable (which is a design flaw).
                // This will cause false positives in Simple Injector's diagnostic services, so we suppress
                // this warning in case the registered type doesn't override Dispose from Controller.
                if (ShouldSuppressDisposableTransientComponent(type))
                {
                    registration.SuppressDiagnosticWarning(
                        DiagnosticType.DisposableTransientComponent,
                            "Derived type doesn't override Dispose, so it can be safely ignored.");
                }

                container.AddRegistration(type, registration);
            }
        }