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