<map> with <index-many-to-many> won't save in NHibernate -
मेरे पास निम्न मानचित्रण है:
& lt;? Xml संस्करण = '1.0' एन्कोडिंग = 'utf-8' & gt; & Lt; हाइबरनेट-मैपिंग असेंबली = 'कोर' नेमस्पेस = 'कोर। मॉडेल्स' xmlns = 'कलश: नबिर्नेट-मैपिंग-2.2' & gt; & Lt; वर्ग का नाम = 'बास्केट' & gt; & Lt; id name = 'id' column = 'id' & gt; & Lt; जनरेटर वर्ग = 'मूल' / & gt; & Lt; / आईडी & gt; & Lt; संपत्ति नाम = "बाहरी आईडी" / & gt; & Lt; नक्शा नाम = "आइटम" सारणी = "बास्केटआईटीम्स" कैसकेड = "सेव-अपडेट" & gt; & Lt; प्रमुख स्तंभ = "बास्केटआईडी" / & gt; & Lt; सूचकांक-कई-से-कई वर्ग = "उत्पाद" स्तंभ = "उत्पाद आईडी" / & gt; & Lt; तत्व स्तंभ = "मात्रा" प्रकार = "System.Int32" / & gt; & Lt; / नक्शा & gt; & Lt; / वर्ग & gt; & Lt; / हाइबरनेट-मैपिंग & gt;
आइटम संग्रह ऐसा दिखता है:
सार्वजनिक वर्चुअल IDictionary & lt; उत्पाद, इंट & gt; आइटम {प्राप्त करें; निजी सेट; }
और मेरे पास एक ऐड विधि है जैसे:
सार्वजनिक वर्चुअल शून्य जोड़ें (उत्पाद उत्पाद, इंट मात्रा) {if (Items.ContainsKey (product )) आइटम [उत्पाद] + = मात्रा; और आइटम। जोड़ें (उत्पाद, मात्रा); }
फिर क्लाइंट कोड कुछ इस तरह दिखता है:
var टोकरी = नया टोक़ (); basket.Add (session.Load & LT; उत्पाद & gt; (productId)); session.SaveOrUpdate (टोकरी); अब, यह मुद्दा यह है कि यह क्लाइंट कोड बास्केट को टोकरी तालिका में सहेजता है, लेकिन टोकआईटीम्स तालिका (मैं SQL सर्वर 2005 का उपयोग कर रहा हूँ) में कोई भी आइटम नहीं सहेजता है। हालांकि, इन-मेमोरी डीबी के खिलाफ यह परीक्षा पास करती है: [टेस्ट] सार्वजनिक शून्य Can_save_basket_with_products () // passes !!! {Var b = नया टोक़ (); b.Add (_savedProduct); _session.SaveOrUpdate (ख); _session.Flush (); _session.Evict (ख); Var से डीबी = _session.Load & lt; बास्केट & gt; (बीआईआईडी); आश्वासन दें। नहीं, नहीं (बी, डीडी); Assert.IsTrue (fromDb.Items.ContainsKey (_savedProduct)); }
जब मैं अपने वास्तविक डीबी के विरुद्ध रहा हूँ तो कोई भी विचार क्यों नहीं बचाएगा? मुझे क्या याद आ रहा है?
ध्यान दें: मैंने इस उदाहरण के लिए अपनी संस्थाओं का अनुवाद किया है, मुझे आशा है कि यह अभी भी समझा जा सकता है, भले ही मैं पुर्तगाली में कुछ छोड़ा हो; -)
ठीक है, पता चला कि मुझे अपने क्लाइंट कोड में फ्लश याद आ रहा था। मैं कैसल मोनोरेल का उपयोग कर रहा हूं और, ऐसा लगता है जैसे एनएच सुविधा सत्र के समापन पर फ्लश नहीं करती। कम से कम एक वेब परिदृश्य में नहीं मैं मान रहा हूँ कि प्रत्येक अनुरोध के बाद सत्र बंद किया जा रहा है।
Comments
Post a Comment