/// <summary> /// 新增商品 /// </summary> /// <param name="commodity"></param> /// <returns></returns> public bool NewCommodity(NewCommodityDto commodity) { var newCommodity = _db.CommodityRepos.FirstOrDefault(n => n.Number == commodity.Number); if (newCommodity == null) { //获取商品名字拼音 var pinyin = GetSpelling.Spelling(commodity.Name); var goods = new CommodityRepo() { Number = commodity.Number, Name = commodity.Name, Price = commodity.Price, Description = commodity.Description, //StatusId = CommodityStatus.OnTheShelf, NameSpelling = pinyin.ToString(), CreateAt = DateTime.Now, LastEditAt = DateTime.Now }; using (var tran = _db.Database.BeginTransaction()) { try { _db.CommodityRepos.Add(goods); //savechanges之后获取增加的商品的id。 _db.SaveChanges(); var commodityId = goods.Id; //定义一个List来获取标签名字集 var tagName = commodity.Tag.ToList(); //从标签表中获取标签id。 var tagId = _db.TagRepos.Where(t => tagName.Contains(t.Name)).Select(t => t.Id).ToArray(); //将商品id和标签id循环加入映射表中 for (int j = 0; j <= tagId.Length - 1; j++) { _db.CommodityToTagRepos.Add(new CommodityToTagRepo() { CommodityId = commodityId, TagId = tagId[j], CreateAt = DateTime.Now, LastEditAt = DateTime.Now }); } tran.Commit(); } catch (Exception) { tran.Rollback(); } } return(_db.SaveChanges() > 0); } else { return(false); } }
/// <summary> /// 修改商品 /// </summary> /// <param name="commodity"></param> /// <returns></returns> public bool EditCommodity(EditCommodityDto commodity) { var editCommodity = _db.CommodityRepos.FirstOrDefault(e => e.Id == commodity.Id); if (editCommodity != null) { //1、删除(取到映射表里的数据并删除(这里的思路是修改时就将标签商品映射表里对应为修改商品id的所有行删除并重新插入)) var cToT = _db.CommodityToTagRepos.Where(c => c.CommodityId == editCommodity.Id).ToArray(); //删除行 for (int d = 0; d <= cToT.Length - 1; d++) { _db.CommodityToTagRepos.Remove(cToT[d]); } //2、修改(先获取商品名字拼音) var pinyin = GetSpelling.Spelling(editCommodity.Name); //修改商品 editCommodity.Name = commodity.Name; editCommodity.Price = commodity.Price; editCommodity.Description = commodity.Description; editCommodity.NameSpelling = pinyin.ToString(); editCommodity.LastEditAt = DateTime.Now; //定义一个List来获取标签名字集 var tagName = commodity.Tag.ToList(); //从标签表中获取标签id。 var tagId = _db.TagRepos.Where(t => tagName.Contains(t.Name)).Select(t => t.Id).ToArray(); //循环将商品id和标签id存入商品标签映射表 for (int j = 0; j <= tagId.Length - 1; j++) { _db.CommodityToTagRepos.Add(new CommodityToTagRepo() { CommodityId = editCommodity.Id, TagId = tagId[j], CreateAt = DateTime.Now, LastEditAt = DateTime.Now }); } return(_db.SaveChanges() > 0); } else { return(false); } }