linq 批量删除,添加数据 || 附带回滚 || 表双主键

本文介绍了如何利用LINQ进行批量删除和添加数据,并特别提到了在处理具有双主键的表时的注意事项。在实体类中设置双主键后,避免在方法中再次设置Key。此外,文章提及在上下文中添加特定的方法来辅助操作。

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

        public void DelandAddEmployeeRole(string strEmpNo,List<Model.EmployeeRole> listEmployeeRoles) {
            using (var transaction = this.Database.BeginTransaction())
            {
                //删除旧数据
                var query = EmployeeRoles.Where(s => s.EmpNo == strEmpNo);
                EmployeeRoles.RemoveRange(query.ToList());
                SaveChanges();
                // 添加新记录
                foreach (Model.EmployeeRole ModelEmployeeRole in listEmployeeRoles)
                {
                    EmployeeRole employeeRole = new EmployeeRole()
                    {
                        EmpNo = ModelEmployeeRole.EmpNo,
                        Role = ModelEmployeeRole.Role,
                        Parameter = ModelEmployeeRole.Parameter
                    };
                    EmployeeRoles.Add(employeeRole);
                }
                SaveChanges();

                
                transaction.Commit();
            }

            //using (TransactionScope transaction = new TransactionScope())
            //{
            //    transaction.Complete();
            //}
        }

------------------添加数据遇到该表双主键,在实体类设置----------------------------

同时注意方法里设定过双主键后,不要再设定key了

    [Table("RoleAndResourceGroup")]
    public class RoleAndResourceGroup
    {
        public static void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<RoleAndResourceGroup>().HasKey(c=>new { c.RoleName,c.ResourceGroupName});
        }
        /// <summary>
        /// RoleName
        /// </summary>
        public string RoleName { get; set; }
        /// <summary>
        /// ResourceGroupName
        /// </summary>	
        public string ResourceGroupName { get; set; }

    }

在context类里加个方法

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasDefaultSchema("Permission");//设置了数据库表的前缀名/模块名
            RoleAndResourceGroup.OnModelCreating(modelBuilder);//主要是这句
        }
        public virtual DbSet<RoleAndResourceGroup> RoleAndResourceGroups { get; set; }   //角色和资源组关系 
然后就可以啦



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值