ef unitofwork 主从表更新

本文介绍了一个用于编辑合同及其详细记录的方法。通过比较新旧记录的ID来决定更新、删除还是插入新的详细记录,并最终保存更改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   readonly UnitOfWork _u = new UnitOfWork();

        public M Get(int id) {
            return _u.T_MtnContractRepository().SingleOrDefault(t => t.ID == id);
        }

        /// <summary>
        /// 编辑对应的合同与记录
        /// </summary>
        /// <param name="m"></param>
        public void Edit(M m) {
            var dbm = _u.T_MtnContractRepository().GetById(m.ID);
            var oldIds = dbm.T_MtnContractDetail.Select(a => a.ID).ToList();
            var newIds = m.T_MtnContractDetail.Select(a => a.ID).ToList();
            oldIds.ForEach(a => {
                if (newIds.Contains(a))
                    _u.T_MtnContractDetailRepository().Update(m.T_MtnContractDetail.First(b => b.ID == a));
                else {
                    _u.T_MtnContractDetailRepository().Delete(a);
                }
            });
            m.T_MtnContractDetail.ForEach(a => {
                a.T_MtnContract_ID = m.ID;
                if (!oldIds.Contains(a.ID)) _u.T_MtnContractDetailRepository().Insert(a);
            });
            _u.T_MtnContractRepository().Update(m);
            _u.Save();
        }

 

转载于:https://www.cnblogs.com/hualiu0/p/4665029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值