EF,在数据访问层,写删除多条记录的方法,写不出来了,求教!!!

大刘0417 2017-02-24 03:21:57
在数据访问层(DAL),写基类的增删改查方法,查询、删除都有了,
我还需要一个根据ID的集合批量删除数据的方法(DeleteEntities),写不出来了。
数据库中的所有表的ID字段名称全部相同,但类型不同,有int,也有guid,还有string的
这是代码

public class BaseDAL<T>
where T : class,new()//实体类型
{
DbContext _DBContext = DbContextFactory.CreateDbContext();
/// <summary>查询</summary>
/// <param name="whereLambda"></param>
public IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda)
{
return _DBContext.Set<T>().Where<T>(whereLambda);
}
/// <summary>删除</summary>
/// <param name="entity"></param>
/// <returns>删除是否成功</returns>
public bool DeleteEntity(T entity)
{
_DBContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Deleted;
// return _DBContext.SaveChanges() > 0;
return true;
}

///这里怎么写??????
public int DeleteEntities(List<?> idList)
{

}
}
...全文
542 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢大哥 解决了
大刘0417 2017-03-01
  • 打赏
  • 举报
回复
多谢。
Xanl 2017-02-26
  • 打赏
  • 举报
回复
看不出来你用的EF的版本。 不过任何版本都定义泛型方法处理批量删除。 六楼是一种, 也可以根据主键来批量删除
threenewbee 2017-02-25
  • 打赏
  • 举报
回复
foreach(var item in query) remove(item) savechanges
lr5420511 2017-02-25
  • 打赏
  • 举报
回复
不知道是你描述问题还是我理解问题,如果你是想批量删除同一种类型的不同实例,可以这样写public int DeleteEntities<TID>(List<TID> idList){实现代码可能需要反射,把编译时的变化推迟到运行时,或者使用IOC帮助推迟都可以},但我不推荐这样的代码,这样设计是愚蠢的。更好的办法是直接这样写
public int DeleteEntities(List<T> TEntities){这里是普通的写法}。如果是你想批量删除不同类型的不同实例,抱歉,我至今没有看见过这样的设计。
feng775661101 2017-02-25
  • 打赏
  • 举报
回复
如果你使用的是ef我这个绝对可以,这个就是ef的原生批量删除。不懂问我
feng775661101 2017-02-25
  • 打赏
  • 举报
回复
public int DelBy(Expression<Func<T, bool>> delWhere) { List<T> listDels = db.Set<T>().Where(delWhere).ToList(); listDels.ForEach(d => { db.Set<T>().Attach(d); db.Set<T>().Remove(d); }); return db.SaveChanges(); } 根基条件删除这个是我框架里面封装好的 你直接调用即可
XBodhi. 2017-02-24
  • 打赏
  • 举报
回复
没有明白你的这个不定ID集合是什么
大刘0417 2017-02-24
  • 打赏
  • 举报
回复
引用 1 楼 qiaohuyue 的回复:
 /// <summary>删除</summary>
    /// <param name="entity"></param>
    /// <returns>删除是否成功</returns>
    public bool DeleteEntity(T entity)
    {
        _DBContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Deleted;
        // return _DBContext.SaveChanges() > 0;
        return true;
    }
第一种循环他

第二种 直接 写SQL 执行。
这个我知道。 我是想根据不定类型的ID集合进行删除。
XBodhi. 2017-02-24
  • 打赏
  • 举报
回复
 /// <summary>删除</summary>
    /// <param name="entity"></param>
    /// <returns>删除是否成功</returns>
    public bool DeleteEntity(T entity)
    {
        _DBContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Deleted;
        // return _DBContext.SaveChanges() > 0;
        return true;
    }
第一种循环他

第二种 直接 写SQL 执行。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧