2017-04-04 9 views
0

私はデータベーステーブルに何百ものレコードを挿入し、それらをチャンク(例えば10レコード)として挿入する必要があります。Entity Framework失敗したレコードをロールバックし、失敗したレコードを私?SaveChangesメソッドを取得する方法は、Entity Frameworkで失敗したレコードのみをロールバックしますか?

私の最初の質問これをどのように達成できますか?

私の2番目の質問は、上記のシナリオに関係なく、多数のレコードを挿入するための良い方法ですか?

答えて

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(); 
関連する問題