关于外键关系下的数据添加及修改
先吐槽下自己,昨晚被同事笑话了,接触ABP两周了,还没把“使用说明”给看完。
以下是外键关系下的添加。(接上文,使用的是一对多,一个market对应多个supply,一个origin对应多个supply,一个erchandise对应多个supply)
1 public virtual async Task<YXTSupplyEditDto> CreateYXTSupplyAsync(YXTSupplyEditDto input) 2 { 3 //TODO:新增前的逻辑判断,是否允许新增 4 //var maket = _yXTMarketRepository.Get(input.Market_Id); 5 //var origin = _yXTOriginRepository.Get(input.Origin_Id); 6 //if (maket == null|| origin == null) 7 //{ 8 9 // return null; 10 11 //} 12 // Mapper.Map<List<YXTSupplyListDto>>(yXTSupplys); 13 var entity = input.MapTo<YXTSupply>(); 14 // var entity2 = input.MapTo<YXTSupply>(); 15 16 17 var market = await _yXTMarketRepository.GetAsync(input.Market_Id); 18 19 var origin = await _yXTOriginRepository.GetAsync(input.Origin_Id); 20 var erchandise = await _yXTMerchandiseRepository.GetAsync(input.Merchandise_Id); 21 //添加子表记录 22 market.YXTSupplys.Add(entity); 23 24 origin.YXTSupplys.Add(entity); 25 26 erchandise.YXTSupplys.Add(entity); 27 //entity = await _yXTSupplyRepository.InsertAsync(entity); 28 return entity.MapTo<YXTSupplyEditDto>(); 29 }
这个实例中,需要掌握的基础:ABP中的仓储,工作单元,还有异常处理。(没人回答你问题的时候就去看使用说明吧骚年,不看就动手,会有很多地方难以进展的。)
以上基础,部分工作ABP已经帮助实现。只需要进行实际所需的写入仓储的编写。
映射和DTO一定不要写错!映射和DTO一定不要写错!映射和DTO一定不要写错!
由于在接触ABP之前,很少甚至可以说根本没接触过数据库外键的配置与使用。如有不得体之处请帮忙指正,非常感谢。
在编写以上代码前,请确认对应的实体类是否已经建立正确的外键关系。
修改的写法和添加的写法相同。在查询需要修改的数据时,发现没查找出对应的外键数据,请查看实体类里是否正确添加外键导航。
删除是使用软删除,也没有用到练级删除,同事说联级删除需要在实体类对应的数据配置文件中配置。下面是配置示例:
1 HasRequired(a => a.LastModifierUser).WithMany().HasForeignKey(c => c.LastModifierUserId).WillCascadeOnDelete(true);
具体实现用到在更新。
浙公网安备 33010602011771号