2011-10-10 13 views
5

मूल रूप से मुझे nHibernate के साथ इकाइयों के संग्रह को हटाने का प्रयास करते समय यह अपवाद मिल रहा है। नीचे मेरी कोडकई ऑब्जेक्ट्स हटाने की कोशिश करते समय NHibernate TooManyRowsAffectedException

public void DeleteAll<T>(IList<T> entities) 
    { 
     using(var tx = session.BeginTransaction()) 
     { 
     try 
     { 
      entities.ForEach(e=>session.Delete(e)); 
      tx.Commit(); 
     } 
     catch(Exception) 
     { 
      tx.Rollback(); 
     } 
     } 
    } 

HQL का उपयोग करते हुए किसी भी मुद्दे के बिना काम करता है, लेकिन मैं LINQish दृष्टिकोण पर कायम रखना पसंद किया है .. ओह और मैं एक Oracle डेटाबेस से कनेक्ट कर रहा हूँ।

+0

अगर एक हटाने आपरेशन अधिक पंक्तियों में अपेक्षा से हटा देता है यह अपवाद फेंक दिया है। क्या आप एसक्यूएल जेनरेट और डेटाबेस टेबल को देखने के लिए देख सकते हैं, कौन सा कथन संभावित रूप से एक से अधिक पंक्तियों को हटा सकता है? – Firo

+1

मुझे समझ में आया कि अपवाद क्यों फेंक दिया गया था, यह केवल 1 पंक्ति प्रभावित होने की उम्मीद करता है (इस मामले में हटा दिया गया), लेकिन क्यों ???? Nhprof हमारे कॉर्पोरेट नेटवर्क वातावरण में काम नहीं करता है :( – Duy

+1

एक फ़ाइल में log4net 'NHIbernate.SQL' के साथ लॉग इन करें। वहां एक ऑरैक क्लाइंट में एसक्यूएल की प्रतिलिपि बनाएँ और उन्हें वहां से चलाने के लिए एक से अधिक पंक्ति – Firo

उत्तर

1

आप foreach से आइटम हटाया नहीं जा सकता है, के लिए कोशिश करते हैं और के लिए के सूचकांक के साथ सावधान रहना, के बाद सेट सूचकांक को दूर -

संबंधित मुद्दे