private void LoadEntitiesFromDatabase() { var loadedEntities = PlatformModuleEntities.GetPlatformModuleEntity(new PlatformModuleEntity { Name = Name }); if (loadedEntities != null) { Entities = loadedEntities; } }
/// <summary> /// Adds item to the module and schedules a persistance action to store the data in the db. /// The contract is that each item with Id = 0 is a new item to be created unless there is an item with the /// same ItemId already read from the database. In that case the database object is used. Otherwise /// a new platfrom item is created in the database. /// </summary> /// <param name="item"></param> public virtual void AddItem(PlatformItem item) { if (item == null) { return; } var context = EntityContextFactory.CreateContext(); context.Attach(Entities); if (item.Id == 0) { var previouslyAddedItem = PlatformModuleEntities.GetAll().SelectMany(a => a.PlatformItems).FirstOrDefault(b => b.ItemId == item.ItemId); if (previouslyAddedItem != null) { context.Detach(previouslyAddedItem); Entities.PlatformItems.Remove(previouslyAddedItem); item.Id = item.ItemId; context.Update(item); } else { item.Id = item.ItemId; context.Add(item); } } else { context.Attach(item); } item.AssociatedPlatformModuleEntity = Entities; context.SaveEntityStateAsyncAndDispose(); Entities.PlatformItems.Add(item); OverallItemCount++; CurrentItemCountChangedEvent(this, new ItemCountChangedEventArgs(CurrentItemCount)); }