コード例 #1
0
        protected EfApplicationServiceBase()
        {
            this.unityContainer = new UnityContainer();

            ServiceLocator.Initialize(
                (x, y) => this.unityContainer.RegisterType(x, y),
                (x, y) => this.unityContainer.RegisterInstance(x, y),
                (x) => { return(this.unityContainer.Resolve(x)); },
                (x) => { return(this.unityContainer.ResolveAll(x)); });

            // Context Factory
            this.connString = this.ConnectionString();
            ctxFactory      = new RootAggregateFrameworkUnitOfWorkFactory <DomainUnitOfWork>(this.connString); //1

            ctxFactory.ValidateDatabaseSchema();                                                               //1

            this.unityContainer.RegisterInstance <IDatabaseManager>(ctxFactory);                               //1

            this.unityContainer.RegisterType <IUnitOfWork, EntityFrameworkUnitOfWork>(this.unitOfWorkPerTestLifeTimeManager);
        }
コード例 #2
0
        protected EfApplicationServiceBase()
        {
            this.unityContainer = new UnityContainer();

            ServiceLocator.Initialize(
                (x, y) => this.unityContainer.RegisterType(x, y),
                (x, y) => this.unityContainer.RegisterInstance(x, y),
                (x) => { return this.unityContainer.Resolve(x); },
                (x) => { return this.unityContainer.ResolveAll(x); });

            // Context Factory
            RootAggregateFrameworkUnitOfWorkFactory<DomainUnitOfWork> ctxFactory = new RootAggregateFrameworkUnitOfWorkFactory<DomainUnitOfWork>(this.ConnectionString());

            ctxFactory.ValidateDatabaseSchema();

            this.unityContainer.RegisterInstance<IDatabaseManager>(ctxFactory);

            this.unityContainer.RegisterType<DbContext, DomainUnitOfWork>(this.contextPerTestLifeTimeManager, new InjectionConstructor(this.ConnectionString()));

            this.unityContainer.RegisterType<IUnitOfWork, EntityFrameworkUnitOfWork>(this.unitOfWorkPerTestLifeTimeManager);

        }
コード例 #3
0
ファイル: EfSqlTest.cs プロジェクト: llenroc/Inflexion2
        public void starter()
        {
            this.unityContainer = new UnityContainer();

            ServiceLocator.Initialize(
                (x, y) => this.unityContainer.RegisterType(x, y),
                (x, y) => this.unityContainer.RegisterInstance(x, y),
                (x) => { return this.unityContainer.Resolve(x); },
                (x) => { return this.unityContainer.ResolveAll(x); });

            // Context Factory
            connString = this.ConnectionString();
            RootAggregateFrameworkUnitOfWorkFactory<MyDomainUnitOfWork> ctxFactory = new RootAggregateFrameworkUnitOfWorkFactory<MyDomainUnitOfWork>(connString);

            if (!ctxFactory.DatabaseExists())
            {
                ctxFactory.CreateDatabase();
            }

            ctxFactory.ValidateDatabaseSchema();

            this.unityContainer.RegisterInstance<IDatabaseManager>(ctxFactory);

            this.unityContainer.RegisterType<DbContext, MyDomainUnitOfWork>(this.contextPerTestLifeTimeManager, new InjectionConstructor(connString));

            this.unityContainer.RegisterType<IUnitOfWork, EntityFrameworkUnitOfWork>(this.unitOfWorkPerTestLifeTimeManager);

            // Repositories
            this.unityContainer.RegisterType<IEntityARepository, EntityARepository>(new PerResolveLifetimeManager());
            this.unityContainer.RegisterType<IEntityBRepository, EntityBRepository>(new PerResolveLifetimeManager());

            ApplicationContext.User = new CorePrincipal(new CoreIdentity("cmendible", "hexa.auth", "*****@*****.**"), new string[] { });
 
            // comienzan las operaciones
            // añadimos una entidad
            // metodo sin factoria y con constructor publico
            //var entityA = new EntityA();
            // entityA.Name = "Martin";
           // metodo con factoriay y constructor interno
            IEntityA entityA = EntityAFactory.Create("Martin");
           

            entityA.CanBeDeleted();

            IEntityARepository repo = this.unityContainer.Resolve<IEntityARepository>();
            repo.Add((EntityA)entityA);


            this.Commit();
            entityA.CanBeDeleted();

            // añadimos 2 entidades y su relación
            var a = EntityAFactory.Create("Willi");

            var b = EntityBFactory.Create("matematicas");
   

            a.AddB(b);

            IEntityARepository repoA = this.unityContainer.Resolve<IEntityARepository>();
            IEntityBRepository repoB = this.unityContainer.Resolve<IEntityBRepository>();

            repoB.Add((EntityB) b);
            repoA.Add((EntityA)a);
            
            this.Commit();


            //añadimos una entidad c dependiente de entidad a la primera entidad a

            EntityA padre = repoA.GetFilteredElements(e => e.Id == 1).FirstOrDefault();
            EntityC hijo = EntityCFactory.Create(padre, "hijo");
          
            this.Commit();

            padre = repoA.GetFilteredElements(e => e.Id == 1).FirstOrDefault();
            padre.CanBeDeleted();
        }
コード例 #4
0
ファイル: EfSqlTest.cs プロジェクト: y497068561/Inflexion2
        public void starter()
        {
            this.unityContainer = new UnityContainer();

            ServiceLocator.Initialize(
                (x, y) => this.unityContainer.RegisterType(x, y),
                (x, y) => this.unityContainer.RegisterInstance(x, y),
                (x) => { return(this.unityContainer.Resolve(x)); },
                (x) => { return(this.unityContainer.ResolveAll(x)); });

            // Context Factory
            connString = this.ConnectionString();
            RootAggregateFrameworkUnitOfWorkFactory <BootstrapUnitOfWork> ctxFactory = new RootAggregateFrameworkUnitOfWorkFactory <BootstrapUnitOfWork>(connString);

            if (!ctxFactory.DatabaseExists())
            {
                ctxFactory.CreateDatabase();
            }

            ctxFactory.ValidateDatabaseSchema();

            this.unityContainer.RegisterInstance <IDatabaseManager>(ctxFactory);

            this.unityContainer.RegisterType <DbContext, BootstrapUnitOfWork>(this.contextPerTestLifeTimeManager, new InjectionConstructor(connString));

            this.unityContainer.RegisterType <IUnitOfWork, EntityFrameworkUnitOfWork>(this.unitOfWorkPerTestLifeTimeManager);

            // Repositories
            this.unityContainer.RegisterType <IEntityARepository, EntityARepository>(new PerResolveLifetimeManager());
            this.unityContainer.RegisterType <IEntityBRepository, EntityBRepository>(new PerResolveLifetimeManager());

            ApplicationContext.User = new CorePrincipal(new CoreIdentity("cmendible", "hexa.auth", "*****@*****.**"), new string[] { });

            // comienzan las operaciones
            // añadimos una entidad
            // metodo sin factoria y con constructor publico
            //var entityA = new EntityA();
            // entityA.Name = "Martin";
            // metodo con factoria y constructor interno
            IEntityA entityA = EntityAFactory.Create("Martin");


            entityA.CanBeDeleted();

            IEntityARepository repo = this.unityContainer.Resolve <IEntityARepository>();

            repo.Add((EntityA)entityA);


            this.Commit();
            entityA.CanBeDeleted();

            // añadimos 2 entidades y su relación
            var a = EntityAFactory.Create("Willi");

            var b = EntityBFactory.Create("matematicas");


            a.AddB(b);

            IEntityARepository repoA = this.unityContainer.Resolve <IEntityARepository>();
            IEntityBRepository repoB = this.unityContainer.Resolve <IEntityBRepository>();

            repoB.Add((EntityB)b);
            repoA.Add((EntityA)a);

            this.Commit();


            //añadimos una entidad c dependiente de entidad a la primera entidad a

            EntityA padre = repoA.GetFilteredElements(e => e.Id == 1).FirstOrDefault();
            EntityC hijo  = EntityCFactory.Create(padre, "hijo");

            this.Commit();

            padre = repoA.GetFilteredElements(e => e.Id == 1).FirstOrDefault();
            padre.CanBeDeleted();
        }