代码之家  ›  专栏  ›  技术社区  ›  Asim Shahzad

SaveChanges()仅影响一行

  •  0
  • Asim Shahzad  · 技术社区  · 9 年前

    我想删除一些记录,并尝试使用以下代码:

    if (objDetail != null) 
    {
        objContext.DetailVouchers.RemoveRange(
            objContext.DetailVouchers.Where(t => t.REFNO == strRefNo));
        objContext.SaveChanges();
    }
    

    但它只删除了最后一条记录,而不是全部。

    我的上下文类是

    class MainContext : DbContext
        {
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                //base.OnModelCreating(modelBuilder);
    
                Database.SetInitializer<MainContext>(null);
    
            modelBuilder.Entity<MainVoucher>().ToTable("TBL_ACC_VOUCHER_MAIN");
            modelBuilder.Entity<MainVoucher>().HasKey(t => new { t.REFNO });
    
            modelBuilder.Entity<DetailVoucher>().ToTable("TBL_ACC_VOUCHER_DETAIL");
            modelBuilder.Entity<DetailVoucher>().HasKey(t => new { t.REFNO });
    }
    }
    

    并创建上下文类对象,如

    MainContext objContext = new MainContext();
    
    2 回复  |  直到 9 年前
        1
  •  0
  •   BrunoA    9 年前

    在使用RemoveRange之前,您必须列出要删除的项目列表。 在第一行使用ToList()尝试reza的解决方案:

    var items = objContext.DetailVouchers.Where(t => t.REFNO == strRefNo).ToList();
    objContext.DetailVouchers.RemoveRange(items);
    context.SaveChanges();
    
        2
  •  0
  •   reza.cse08    9 年前

    试试这个。 [编辑]

    var items = objContext.DetailVouchers.Where(t => t.REFNO == strRefNo);
    objContext.DetailVouchers.RemoveRange(items);
    context.SaveChanges();