5

मैं फ्लेंट निबर्ननेट 1.2 और एनएचबेर्नेट 3.1 का उपयोग करके एक परियोजना को अपग्रेड करने की कोशिश कर रहा हूं, एफएनएच 1.3 और एनएच 3.2, और यह सब काम करने लगता है सिवाय इसके कि मुझे अपवाद मिल रहा है एक लिस्ट() कमांड।इंडेक्स सरणी की सीमाओं के बाहर था - एनएचबीर्नेट 3.2

अपवाद प्रकार & संदेश रहे हैं ... NHibernate.Exceptions.GenericADOException खोजने के करने में असमर्थ [एसक्यूएल: एसक्यूएल उपलब्ध नहीं] और भीतरी अपवाद ... System.IndexOutOfRangeException सूचकांक की सीमा के बाहर था सरणी

मैंने SQL सर्वर में क्वेरी प्रोफाइल की है और मुझे लगता है कि यह ऐपफ़ैब्रिक कैश और एनएच 3.2 के साथ एक समस्या है क्योंकि एनएच द्वारा उत्पन्न क्वेरी ठीक है।

कोड में कुछ भी मेरे एफएनएच और एनएच संदर्भों में बदलाव नहीं आया है।

नीचे

return ResourceRepository.Query() 
         .LeftOuterJoin(r => r.ResourceCorpus,() => resourceCorpusAlias) 
         .LeftOuterJoin(r => r.ResourceType,() => resourceTypeAlias) 
         .Cachable() 
         .List(); 

सी # में अपनी क्वेरी है ... और नीचे मानचित्रण FNH द्वारा उत्पन्न HBM जो संस्करणों के बीच बदल नहीं चढ़े, जिस है ...

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false"> 
    <class xmlns="urn:nhibernate-mapping-2.2" schema="[Reference]" mutable="false" name="MyAssembly.Reference.Resource, MyAssembly.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="`Resource`"> 
    <cache usage="read-only" /> 
    <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" unsaved-value="0"> 
     <column name="Id" /> 
     <generator class="assigned" /> 
    </id> 
    <bag name="ResourceCorpus" mutable="false"> 
     <cache usage="read-only" /> 
     <key> 
     <column name="ResourceId" /> 
     </key> 
     <one-to-many class="MyAssembly.Reference.ResourceCorpus, MyAssembly.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    </bag> 
    <property name="TokenName" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <column name="TokenName" /> 
    </property> 
    <property name="Description" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <column name="Description" /> 
    </property> 
    <many-to-one class="MyAssembly.Reference.ResourceType, MyAssembly.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" fetch="select" name="ResourceType"> 
     <column name="ResourceTypeId" /> 
    </many-to-one> 
    </class> 
</hibernate-mapping> 

एनएच 3.2 स्रोत में निम्न पंक्ति जहां अपवाद है ...

if (nonCacheable != null && nonCacheable[i]) 

और कॉल स्टैक ...

> NHibernate.dll!NHibernate.Type.TypeHelper.Disassemble(object[] row, NHibernate.Type.ICacheAssembler[] types, bool[] nonCacheable, NHibernate.Engine.ISessionImplementor session, object owner) 
    NHibernate.dll!NHibernate.Cache.StandardQueryCache.Put(NHibernate.Cache.QueryKey key, NHibernate.Type.ICacheAssembler[] returnTypes, System.Collections.IList result, bool isNaturalKeyLookup, NHibernate.Engine.ISessionImplementor session) 
    NHibernate.dll!NHibernate.Loader.Loader.PutResultInQueryCache(NHibernate.Engine.ISessionImplementor session, NHibernate.Engine.QueryParameters queryParameters, NHibernate.Type.IType[] resultTypes, NHibernate.Cache.IQueryCache queryCache, NHibernate.Cache.QueryKey key, System.Collections.IList result) 
    NHibernate.dll!NHibernate.Loader.Loader.ListUsingQueryCache(NHibernate.Engine.ISessionImplementor session, NHibernate.Engine.QueryParameters queryParameters, Iesi.Collections.Generic.ISet<string> querySpaces, NHibernate.Type.IType[] resultTypes) 
    NHibernate.dll!NHibernate.Loader.Criteria.CriteriaLoader.List(NHibernate.Engine.ISessionImplementor session) 
    NHibernate.dll!NHibernate.Impl.SessionImpl.List(NHibernate.Impl.CriteriaImpl criteria, System.Collections.IList results) 
    NHibernate.dll!NHibernate.Impl.CriteriaImpl.List(System.Collections.IList results) 
    NHibernate.dll!NHibernate.Impl.CriteriaImpl.List<MyAssembly.Reference.Resource>() 

तो यदि आप चाहते हैं कि कोई और जानकारी मुझे बताए, तो किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद।

+0

आप ऐपफ़ैब्रिक से कैसे बात कर रहे हैं? क्या आप एनएचकॉन्ट्रिब से वेग प्रदाता का उपयोग कर रहे हैं? – PhilPursglove

+0

नहीं, हम माइक्रोसॉफ्ट का उपयोग कर रहे हैं। एप्लीकेशन सर्वर। कैशिंग असेंबली। – electricsheep

+0

मैं इस बारे में गलत (और शायद) गलत हो सकता हूं लेकिन मुझे लगता है कि * ऐपफैब्रिक की समस्या यहां नहीं है। मेरी समझ यह है कि एनएचबर्ननेट के साथ दूसरे स्तर के कैश के रूप में ऐपफ़ैब्रिक (या कोई अन्य कैश) का उपयोग करने के लिए, आपको प्रदाता के साथ इसके लिए समर्थन शामिल करना होगा (http://nhforge.org/doc/nh/en/ पर कुछ विवरण index.html # कैश), यह स्वचालित रूप से स्वचालित रूप से नहीं होता है; इसलिए प्रदाता के बारे में मेरा सवाल है। – PhilPursglove

उत्तर

4

इंटरनेट (उर्फ गूगल) अधिक यह पाया थोड़ा चारों ओर पक्ष के बाद ...

https://nhibernate.jira.com/browse/NH-2961

एनएच 3.2 में अपनी एक ज्ञात बग बाहर कर देता है सोचा था कि मैं यहां किसी और मामले किसी में पोस्ट होता रहा है इस मुद्दे।

+0

भी 3.3.1.4000 nhibernate में – giammin

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