Exemplo n.º 1
0
        public NorthwindResultSet SubmitChanges(ClientInfo clientInfo, NorthwindChangeSet changeSet)
        {
            var resultSet = new NorthwindResultSet(changeSet);

            using (var transactionScope = CreateSavingTransactionScope())
            {
                using (var dataRepository = _repositoryFactory(clientInfo))
                {
                    // optional custom processing
                    PreProcessing(clientInfo, ref changeSet, dataRepository);

                    // apply chnages to repository
                    ApplyChanges(dataRepository, dataRepository.Categories, changeSet, changeSet.Categories, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.DemographicGroups, changeSet, changeSet.DemographicGroups, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Customers, changeSet, changeSet.Customers, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.DynamicContentEntities, changeSet, changeSet.DynamicContentEntities, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Employees, changeSet, changeSet.Employees, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Order_Details, changeSet, changeSet.Order_Details, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Orders, changeSet, changeSet.Orders, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Products, changeSet, changeSet.Products, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Regions, changeSet, changeSet.Regions, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Shippers, changeSet, changeSet.Shippers, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Suppliers, changeSet, changeSet.Suppliers, clientInfo);
                    ApplyChanges(dataRepository, dataRepository.Territories, changeSet, changeSet.Territories, clientInfo);

                    // optional custom processing
                    BeforeSaving(clientInfo, ref changeSet, dataRepository);

                    // save changes
                    SaveChanges(dataRepository, changeSet, resultSet);

                    // optional custom processing
                    PostProcessing(clientInfo, ref resultSet, dataRepository);
                }
                transactionScope.Complete();
            }
            return(resultSet);
        }
Exemplo n.º 2
0
        public NorthwindChangeSet CreateChangeSet(IEnumerable <Category> categories, IEnumerable <DemographicGroup> demographicGroups, IEnumerable <Customer> customers, IEnumerable <DynamicContentEntity> dynamicContentEntities, IEnumerable <Employee> employees, IEnumerable <Order_Detail> order_Details, IEnumerable <Order> orders, IEnumerable <Product> products, IEnumerable <Region> regions, IEnumerable <Shipper> shippers, IEnumerable <Supplier> suppliers, IEnumerable <Territory> territories)
        {
            // retrieve changes sets (modified entities)
            var categoryChangeSet             = GetChangeSet(categories);
            var demographicGroupChangeSet     = GetChangeSet(demographicGroups);
            var customerChangeSet             = GetChangeSet(customers);
            var dynamicContentEntityChangeSet = GetChangeSet(dynamicContentEntities);
            var employeeChangeSet             = GetChangeSet(employees);
            var order_DetailChangeSet         = GetChangeSet(order_Details);
            var orderChangeSet     = GetChangeSet(orders);
            var productChangeSet   = GetChangeSet(products);
            var regionChangeSet    = GetChangeSet(regions);
            var shipperChangeSet   = GetChangeSet(shippers);
            var supplierChangeSet  = GetChangeSet(suppliers);
            var territoryChangeSet = GetChangeSet(territories);

            // reduce entities (copy changed values)
            var categoriesMap             = ReduceToModifications(categoryChangeSet);
            var demographicGroupsMap      = ReduceToModifications(demographicGroupChangeSet);
            var customersMap              = ReduceToModifications(customerChangeSet);
            var dynamicContentEntitiesMap = ReduceToModifications(dynamicContentEntityChangeSet);
            var employeesMap              = ReduceToModifications(employeeChangeSet);
            var order_DetailsMap          = ReduceToModifications(order_DetailChangeSet);
            var ordersMap      = ReduceToModifications(orderChangeSet);
            var productsMap    = ReduceToModifications(productChangeSet);
            var regionsMap     = ReduceToModifications(regionChangeSet);
            var shippersMap    = ReduceToModifications(shipperChangeSet);
            var suppliersMap   = ReduceToModifications(supplierChangeSet);
            var territoriesMap = ReduceToModifications(territoryChangeSet);

            // fixup relations (replaces related entities with reduced entites)
            FixupRelations(
                CastToEntityTuple(categoriesMap),
                CastToEntityTuple(demographicGroupsMap),
                CastToEntityTuple(customersMap),
                CastToEntityTuple(dynamicContentEntitiesMap),
                CastToEntityTuple(employeesMap),
                CastToEntityTuple(order_DetailsMap),
                CastToEntityTuple(ordersMap),
                CastToEntityTuple(productsMap),
                CastToEntityTuple(regionsMap),
                CastToEntityTuple(shippersMap),
                CastToEntityTuple(suppliersMap),
                CastToEntityTuple(territoriesMap)
                );

            var changeSet = new NorthwindChangeSet();

            if (categoriesMap.Count > 0)
            {
                changeSet.Categories = categoriesMap.Select(e => e.ReducedEntity).ToList();
            }
            if (demographicGroupsMap.Count > 0)
            {
                changeSet.DemographicGroups = demographicGroupsMap.Select(e => e.ReducedEntity).ToList();
            }
            if (customersMap.Count > 0)
            {
                changeSet.Customers = customersMap.Select(e => e.ReducedEntity).ToList();
            }
            if (dynamicContentEntitiesMap.Count > 0)
            {
                changeSet.DynamicContentEntities = dynamicContentEntitiesMap.Select(e => e.ReducedEntity).ToList();
            }
            if (employeesMap.Count > 0)
            {
                changeSet.Employees = employeesMap.Select(e => e.ReducedEntity).ToList();
            }
            if (order_DetailsMap.Count > 0)
            {
                changeSet.Order_Details = order_DetailsMap.Select(e => e.ReducedEntity).ToList();
            }
            if (ordersMap.Count > 0)
            {
                changeSet.Orders = ordersMap.Select(e => e.ReducedEntity).ToList();
            }
            if (productsMap.Count > 0)
            {
                changeSet.Products = productsMap.Select(e => e.ReducedEntity).ToList();
            }
            if (regionsMap.Count > 0)
            {
                changeSet.Regions = regionsMap.Select(e => e.ReducedEntity).ToList();
            }
            if (shippersMap.Count > 0)
            {
                changeSet.Shippers = shippersMap.Select(e => e.ReducedEntity).ToList();
            }
            if (suppliersMap.Count > 0)
            {
                changeSet.Suppliers = suppliersMap.Select(e => e.ReducedEntity).ToList();
            }
            if (territoriesMap.Count > 0)
            {
                changeSet.Territories = territoriesMap.Select(e => e.ReducedEntity).ToList();
            }

            return(changeSet);
        }
Exemplo n.º 3
0
 partial void BeforeSaving(ClientInfo clientInfo, ref NorthwindChangeSet changeSet, INorthwindRepository repository);
Exemplo n.º 4
0
 partial void PreProcessing(ClientInfo clientInfo, ref NorthwindChangeSet changeSet, INorthwindRepository repository);