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); } }