关于外键关系下的数据添加及修改

先吐槽下自己,昨晚被同事笑话了,接触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);

具体实现用到在更新。

posted on 2017-03-25 11:44  阿鄙  阅读(481)  评论(0)    收藏  举报