private MyObjectWrapper GetDummyData()
        {
            var wrapperParent = new MyObjectWrapper
            {
                ObjectWrapperId = 1,
                Name            = @"Second",
                ObjectAsByte    = ObjectToSmthgConverter.ObjectToByteArray(new SerializableObject
                {
                    Description = @"132asde-+/*31123321",
                    Id          = 35,
                    Name        = @"132312#$%@%213312",
                    Price       = 14,
                    Value       = 22,
                })
            };

            var collectionItemChildA = new MyCollectionItem
            {
                MyCollectionItemId = 1,
                MyObjectWrapperId  = 1,
                MyObjectWrapper    = wrapperParent
            };
            var collectionItemChildB = new MyCollectionItem
            {
                MyCollectionItemId = 2,
                MyObjectWrapperId  = 1,
                MyObjectWrapper    = wrapperParent
            };

            wrapperParent.Items.Add(collectionItemChildA);
            wrapperParent.Items.Add(collectionItemChildB);

            return(wrapperParent);
        }
Beispiel #2
0
        public MyObjectWrapper InsertOrUpdate(MyObjectWrapper myObjectWrapper)
        {
            this.dbContext.Database.Log = message => logger.Log(message);
            MyObjectWrapper resultingObject;

            if (myObjectWrapper.ObjectWrapperId == default(int) ||
                !this.dbContext
                .MyObjectWrappers
                .Any(wrapper => wrapper.ObjectWrapperId == myObjectWrapper.ObjectWrapperId))
            {
                resultingObject = this.dbContext.MyObjectWrappers.Add(myObjectWrapper);
            }
            else
            {
                var objectWrapper = this.dbContext
                                    .MyObjectWrappers
                                    .Include(ow => ow.Items)
                                    .FirstOrDefault(ow => ow.ObjectWrapperId == myObjectWrapper.ObjectWrapperId);

                objectWrapper.Name         = myObjectWrapper.Name;
                objectWrapper.ObjectAsByte = myObjectWrapper.ObjectAsByte;

                foreach (var item in myObjectWrapper.Items)
                {
                    if (item.MyCollectionItemId == default(int) ||
                        !objectWrapper
                        .Items
                        .Any(it => it.MyCollectionItemId == item.MyCollectionItemId))
                    {
                        objectWrapper.Items.Add(item);
                    }
                    else if (item.MyObjectWrapper == null)
                    {
                        var itemToRemove = objectWrapper
                                           .Items
                                           .FirstOrDefault(i => i.MyCollectionItemId == item.MyCollectionItemId);
                        objectWrapper.Items.Remove(itemToRemove);
                    }
                    else
                    {
                        //Update Properties of item
                    }
                }

                resultingObject = objectWrapper;
            }

            this.dbContext.SaveChanges();
            return(resultingObject);
        }