entity framework 批量删除

来源:互联网 发布:阿里数据 编辑:程序博客网 时间:2024/05/17 20:30

以前用SQL写批量删除的时候,感觉挺利索的,简洁地写了

public bool Delectusersuggest(string addsql)
        {
            bool resultdelete = false;
            string sql = "delete from UserSuggest where";
            sql += addsql;
            resultdelete = this.ExeSQL(sql);
            return resultdelete;
        },然后在页面层直接调用

现在用Entity Framework,感觉有点麻烦不能直接delete,还要先把数据查出来,以下是主要代码:

1、先查出实体

#region 通过供应商用户ID返回供应商实体  --LJY
        /// <summary>
        /// 通过传入供应商用户ID返回对应的供应商实体
        /// </summary>
        /// <param name="supplierid"></param>
        /// <returns></returns>
        public Entity.供应商信息表 SelectOneSupplier(int supplierid) {
          
            Entity.供应商信息表 supp= null;
            try
            {           
                supp = context.TB_CUS_SUPPLIER_INFO.Single(b=>b.SUPP_ID==supplierid);             
            }
            catch { }
            return supp;
        }
        #endregion

2、再删除

#region 批量删除供应商用户  --LJY
        /// <summary>
        /// 传入供应商用户ID数组,批量删除供应商用户,成功返回true,失败返回false
        /// </summary>
        /// <param name="arr"></param>
        /// <returns></returns>
        public bool DeleteBatchSupplier(string sids) {
            bool flag = false;
            context.Connection.Open();
            var tran = context.Connection.BeginTransaction();
            try
            {
              sids=sids.Substring(0, sids.Length - 1);
                string[] ids = sids.Split('|');

                  foreach (var item in ids)
                {
                    Entity.供应商信息表 mm = new Entity.供应商信息表();
                    mm = this.SelectOneSupplier(Convert.ToInt32(item));
                    context.TB_CUS_SUPPLIER_INFO.DeleteObject(mm);
                    context.SaveChanges();
                }
                tran.Commit();
                flag = true;
                context.Connection.Close();
            }
            catch {
                tran.Rollback();
                context.Connection.Close();
            }
            return flag;
        }

        #endregion

 

以上是小弟的不才之解,不过可以成功实现自己想要用的功能,哪里不中处望各位指教,谢谢!