Exemplo n.º 1
0
        //Int32 Create(EntityADto entityADto, UserContextDto userContextDto);// invocacion con identificación de usuario
        public int Create(EntityBDto entityBDto)
        {
            #region Preconditions

            // Comprobar el DTO de entrada.
            Guard.ArgumentIsNotNull(
                entityBDto,
                string.Format(
                    Inflexion2.Resources.Framework.DataTransferObjectIsNull,
                    "Entity B"));                               //// usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.EntityBAlias

            // Comprobar los campos mandatory dentro del DTO.
            Guard.ArgumentNotNullOrEmpty(
                entityBDto.Name,
                string.Format(
                    Inflexion2.Resources.Framework.PropertyRequired,
                    "Name", "Entity B"));                                     //// usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.EntityBNameAlias
            // el dto debe corresponder a un transient el id debe tener el valor por defecto
            //if (entityBDto.Id != default(int))
            Guard.Against <ArgumentException>(entityBDto.Id != default(int),

                                              string.Format(
                                                  Inflexion2.Resources.Framework.IsNotTransient,
                                                  "Entity B")); //// usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.EntityBNameAlias

            #endregion

            EntityB            entityB = EntityBFactory.Create(entityBDto.Name);
            IEntityBRepository repo    = this.unityContainer.Resolve <IEntityBRepository>();
            repo.Add(entityB);
            this.Commit();

            return(entityB.Id);
        }
Exemplo n.º 2
0
        } // EntityMapping

        /// <summary>
        /// Metodo encargado de obtener una nueva entidad a partir de la información de un Dto
        /// L
        /// </summary>
        /// <param name="entityBDto"></param>
        /// <returns></returns>
        public IEntityB DataMapping(EntityBDto entityBDto)
        {
            // Comprobamos el parámetro de entrada.
            Guard.ArgumentIsNotNull(
                entityBDto,
                string.Format(
                    Inflexion2.Resources.Framework.MapperErrorEntityNull,
                    "Entity B DTo")                                 // usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.CategoriaAlias
                );
            Guard.ArgumentIsNotNull(
                entityBDto.Name,
                string.Format(
                    Inflexion2.Resources.Framework.PropertyRequired,
                    "Name", "Entity B DTo")                                // usar un fichero de recursos para el dominio de negocio Company.Product.BoundedContext.Resources.Business.CategoriaAlias
                );

            IEntityB entityB = EntityBFactory.Create(entityBDto.Name);

            return(entityB);
        }
Exemplo n.º 3
0
        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();
        }