Exemple #1
0
        /// <summary>
        /// 设置产品分类
        /// </summary>
        /// <param name="product"></param>
        /// <param name="category"></param>
        /// <returns></returns>
        public ProductCategorization Categorize(Product product, Category category)
        {
            if (product == null)
            {
                throw new ArgumentNullException("product");
            }
            if (category == null)
            {
                throw new ArgumentNullException("category");
            }
            var prdCategorization = _productCategorizationRepository.GetBySpecification(
                Specification <ProductCategorization> .Eval(c => c.ProductId == product.Id));
            /*对比这两个方法*/
            var test = _productCategorizationRepository.GetByExpression(c => c.ProductId == product.Id);

            if (prdCategorization == null)
            {
                prdCategorization = ProductCategorization.CreateCategorization(product, category);
                _productCategorizationRepository.Add(prdCategorization);
            }
            else
            {
                prdCategorization.CategoryId = category.Id;
                _productCategorizationRepository.Update(prdCategorization);
            }

            _repositoryContext.Commit();
            return(prdCategorization);
        }
        // 将指定的商品从其所属的商品分类中移除
        public void Uncategorize(Product product, Category category = null)
        {
            Expression <Func <ProductCategorization, bool> > specExpress = null
            ;

            if (category == null)
            {
                specExpress = p => p.ProductId == product.Id;
            }
            else
            {
                specExpress = p => p.ProductId == product.Id && p.CategoryId == category.Id;
            }
            var productCategorization = _productCategorizationRepository.GetByExpression(specExpress);

            if (productCategorization == null)
            {
                return;
            }

            _productCategorizationRepository.Remove(productCategorization);
            _repositoryContext.Commit();
        }