如何让SaveChanges方法只回滚实体框架中的失败记录?

时间:2017-04-04 12:44:27

标签: entity-framework transactions

我有一个场景,我想将数百条记录插入数据库表,我想将它们作为块插入(例如10条记录),我只需要实体框架来回滚失败的记录和将失败的记录退还给我?

我的第一个问题我如何实现这一目标?

我的第二个问题是,无论上面提到的场景如何,都有一个很好的插入大量记录的做法?

1 个答案:

答案 0 :(得分:0)

StatelessSession session = factory.openStatelessSession();
Transaction tx = session.beginTransaction();
for(int i = 0; i < resultItems.size(); i++) {
   try
   {
       Customer cust = new Customer(resultItems.get(i));   
       Long id = session.save(cust); // get the generated id
   }
   catch(Exception e)
   {
    //track your exceptional customer here
    System.out.println("customer not added ="+resultItems.get(i).custorName)
   }

    if(i % BATCH_SIZE == 0) {
        session.flush();
        session.clear();
    }
}
tx.commit();
session.close();