private Stat SaveChanges(MGFContext entities, DataEntities.Stat entity)
 {
     // Save everything in the context (unit of work means it should only be this entity and anything it contains)
     entities.SaveChanges();
     // reload what the database has based on the ID that we modified
     return(Fetch(entity.StatId));
 }
        protected override Stat Update(Stat domainObject)
        {
            // Pull out the id because we'll be using it in a lambda that might be deferred when calling and the thread may not have access to the domain object's context
            // (yay multithreading)
            int id;

            if (null == domainObject)
            {
                throw new ArgumentNullException(nameof(domainObject));
            }

            id = domainObject.Id;
            using (MGFContext entities = new MGFContext())
            {
                DataEntities.Stat entity = entities.Stats
                                           .FirstOrDefault(statEntity => statEntity.StatId == id);

                if (entity != null)
                {
                    Map(domainObject, entity);
                    domainObject = SaveChanges(entities, entity);
                }
            }
            return(domainObject);
        }
Exemple #3
0
        // One way mapping of all data in the domain object to the entity for adding/updating
        protected override void Map(Character domainObject, object entity)
        {
            DataEntities.Character characterEntity = entity as DataEntities.Character;

            if (null == domainObject)
            {
                throw new ArgumentNullException(nameof(domainObject));
            }

            if (null == entity)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            if (null == characterEntity)
            {
                throw new ArgumentOutOfRangeException(nameof(entity));
            }

            // map all fields from th domain object to the entity except the ID if it isnt allowed to change ( most IDs should never be changed)
            //characterEntity.Id = domainObject.Id;
            characterEntity.Name = domainObject.Name;
            foreach (Stat stat in domainObject.Stats)
            {
                DataEntities.Stat statEntity = null;
                StatMapper        mapper     = new StatMapper();
                mapper.MapStat(stat, statEntity);
                characterEntity.Stats.Add(statEntity);
            }
        }
        protected override void Map(Stat domainObject, object entity)
        {
            DataEntities.Stat statEntity = entity as DataEntities.Stat;

            if (null == domainObject)
            {
                throw new ArgumentNullException(nameof(domainObject));
            }

            if (null == entity)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            if (null == statEntity)
            {
                throw new ArgumentOutOfRangeException(nameof(entity));
            }

            // Map all fields from the domain object to the entity except the ID if it isn't allow to change
            // (most IDs should never be changed).
            //statEntity.Id = domainObject.Id;

            statEntity.Name  = domainObject.Name;
            statEntity.Value = domainObject.Value;
        }
 protected override Stat Insert(Stat domainObject)
 {
     using (MGFContext entities = new MGFContext())
     {
         DataEntities.Stat entity = new DataEntities.Stat();
         Map(domainObject, entity);
         entities.Stats.Add(entity);
         domainObject = SaveChanges(entities, entity);
     }
     return(domainObject);
 }
 protected override void DeleteNow(int id)
 {
     using (MGFContext entities = new MGFContext())
     {
         MGF.DataEntities.Stat entity = new DataEntities.Stat {
             StatId = id
         };
         // Gets the character list and attaches the entity to the contain (makes this object exist in the list of objects).
         entities.Stats.Attach(entity);
         // Remove the character from the container
         entities.Stats.Remove(entity);
         entities.SaveChanges();
     }
 }
        protected override Stat Fetch(int id)
        {
            Stat statObject = null;

            using (MGFContext entities = new MGFContext())
            {
                DataEntities.Stat entity = entities.Stats
                                           // Eagerly grab this entities linked object - Stats
                                           //.Include(characterEntity => characterEntity.Stats)
                                           .FirstOrDefault(statEntity => statEntity.StatId == id);

                if (entity != null)
                {
                    // Load data and extra data such as linked objects or XML data etc
                    statObject = new Stat(entity.StatId, entity.Name, entity.Value);
                }
            }
            return(statObject);
        }