public void CatalogPatchTest() { var chageTracker = new ObservableChangeTracker { RemoveAction = (x) => { Console.WriteLine(x.ToString()); } }; var dbCatalog1 = new dataModel.Catalog { Name = "catalog1", DefaultLanguage = "en-us" }; dbCatalog1.CatalogLanguages.Add(new dataModel.CatalogLanguage { Language = "en-us" }); dbCatalog1.CatalogLanguages.Add(new dataModel.CatalogLanguage { Language = "fr-fr" }); var dbCatalog2 = new dataModel.Catalog { Name = "unknow" }; dbCatalog2.CatalogLanguages.Add(new dataModel.CatalogLanguage { Language = "ru-ru" }); chageTracker.Attach(dbCatalog2); dbCatalog1.Patch(dbCatalog2); }
protected virtual ObservableChangeTracker GetChangeTracker(IRepository repository) { var retVal = new ObservableChangeTracker { RemoveAction = x => repository.Remove(x), AddAction = x => repository.Add(x) }; return retVal; }
private ObservableChangeTracker GetChangeTracker(IRepository repository, CustomerOrderEntity customerOrderEntity) { var retVal = new ObservableChangeTracker { RemoveAction = (x) => { repository.Remove(x); }, AddAction = (x) => { var address = x as AddressEntity; var shipment = x as ShipmentEntity; var lineItem = x as LineItemEntity; if (address != null) { address.CustomerOrder = customerOrderEntity; } if (shipment != null) { foreach (var shipmentItem in shipment.Items) { var orderLineItem = customerOrderEntity.Items.FirstOrDefault(item => item.Id == shipmentItem.Id); if (orderLineItem != null) { orderLineItem.Shipment = shipment; } else { shipmentItem.CustomerOrder = customerOrderEntity; } } shipment.Items = new NullCollection<LineItemEntity>(); } if (lineItem != null) { lineItem.CustomerOrder = customerOrderEntity; lineItem.CustomerOrderId = customerOrderEntity.Id; } repository.Add(x); } }; return retVal; }