예제 #1
0
        private void LoadEntitiesFromDatabase()
        {
            var loadedEntities = PlatformModuleEntities.GetPlatformModuleEntity(new PlatformModuleEntity {
                Name = Name
            });

            if (loadedEntities != null)
            {
                Entities = loadedEntities;
            }
        }
예제 #2
0
        /// <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));
        }