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