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