コード例 #1
0
 private Character SaveChanges(MGFContext entities, DataEntities.Character entity)
 {
     // save everything in the context (unit of work means it should only be this entity and anything in contains)
     entities.SaveChanges();
     // reload what the database has based on the ID that we modified
     return(Fetch(entity.Id));
 }
コード例 #2
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);
            }
        }
コード例 #3
0
        protected override Character Update(Character domainObject)
        {
            // Pull out the id because well be using it in the limbda that might be deferred when im calling and the thread may not have access to the domain objects context
            int id;

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

            id = domainObject.Id;
            using (MGFContext entities = new MGFContext())
            {
                DataEntities.Character entity = entities.Characters
                                                .Include(characterEntity => characterEntity.Stats)
                                                .FirstOrDefault(characterEntity => characterEntity.Id == id);

                if (entity != null)
                {
                    Map(domainObject, entity);
                    domainObject = SaveChanges(entities, entity);
                }
            }

            return(domainObject);
        }
コード例 #4
0
 protected override Character Insert(Character domainObject)
 {
     using (MGFContext entities = new MGFContext())
     {
         DataEntities.Character entity = new DataEntities.Character();
         Map(domainObject, entity);
         entities.Characters.Add(entity);
         domainObject = SaveChanges(entities, entity);
     }
     return(domainObject);
 }
コード例 #5
0
 protected override void DeleteNow(int id)
 {
     using (MGFContext entities = new MGFContext())
     {
         DataEntities.Character entity = new DataEntities.Character {
             Id = id
         };
         // gets the character list and attaches the entity to the container (makes this object exist in the list of objects)
         entities.Characters.Attach(entity);
         // remove the character from the container
         entities.Characters.Remove(entity);
         entities.SaveChanges();
     }
 }
コード例 #6
0
        protected override Character Fetch(int id)
        {
            Character characterObject = null;

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

                if (entity != null)
                {
                    // Load data and extra data such as linked objects or XML data etc
                    characterObject = new Character(entity.Id, entity.Name);
                }
            }
            return(characterObject);
        }
コード例 #7
0
        public DataEntities.Character GetCharacter()
        {
            DataEntities.Character ret;

            var gender = GetGender();

            var genderOther = "";

            if (gender == DataEntities.Character.GenderEnum.Other)
            {
                //Get random gender name from file
                var randomGender = (DataEntities.FileLists.GenderFile)BusinessImplementation.FileHandler.GetRandom(DataEntities.FileLists.FileList.FileTypes.Genders, new Dictionary <string, object>()
                {
                });
                genderOther = randomGender.Gender;
            }

            var name = (DataEntities.FileLists.NameFile)BusinessImplementation.FileHandler.GetRandom(DataEntities.FileLists.FileList.FileTypes.Names, new Dictionary <string, object>()
            {
                { "Gender", gender }
            });
            var race          = GetRace();
            var age           = GetAge(race);
            var jobTitle      = GetJobTitle(false);
            var factionLevels = GetFactionLevels();
            var inventory     = GetInventory(jobTitle);

            ret = new DataEntities.Character()
            {
                Name          = name.Name,
                Gender        = gender,
                GenderOther   = genderOther,
                Age           = age,
                JobTitle      = jobTitle,
                FactionLevels = factionLevels,
                Inventory     = inventory,
                Race          = race
            };

            return(ret);
        }