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