2012-02-10 8 views
20

कर सकते हैं .NET 4 ISet <> हैशसेट <> NHibernate Iesi.Collections ISet, हैशसेट को प्रतिस्थापित करें? मैं कैसल प्रॉक्सी और एनएचबेर्नेट 3.0 का उपयोग कर रहा हूं।.NET 4 ISet <> हैशसेट <> NHHernate Iesi को बदल सकता है। चयन आईसेट, हैशसेट?

+1

http://stackoverflow.com/questions/6272636/nhibernate-unable-to-cast-persistentgenericset-to-iset –

उत्तर

10

नहीं, इस उत्तर के रूप में नहीं।

एनएचबेर्नेट इंजन आंतरिक संग्रह कक्षाओं पर Iesi.Collections.ISet इंटरफेस का उपयोग करता है जो आपके वर्गों में संग्रह के आसपास रैपर के रूप में उपयोग किया जाता है जो एनएचबीर्नेट जारी रहता है। System.Collections.Generic.ISet<T> पर कोई प्रत्यक्ष रूपांतरण नहीं है।

अद्यतन: NHibernate 4 अब आंतरिक रूप से बीसीएल से HashSet<T> का उपयोग करता है, और HashedSet<T>Iesi.Collections निर्भरता से हटा दिया गया। System.Collections.Generic.ISet<T> का उपयोग करने का दृष्टिकोण अब उपलब्ध है।

18

हां।

  1. ICollection<T> के रूप में अपने संग्रह घोषित और HashSet<T> के रूप में यह प्रारंभ: वहाँ दो दृष्टिकोण हैं। this article देखें। मैं व्यक्तिगत संग्रह सदस्यों के रूप में संग्रहित करता हूं और IEnumerable<T> का खुलासा करता हूं, इसलिए यह अच्छी तरह से काम करता है, लेकिन नकारात्मकता यह है कि आप ISet<T> का पर्दाफाश नहीं कर सकते हैं।
  2. जोस रोमानियालो के सेट 4 नेट 4 NuGet पैकेज का उपयोग करें। this article और source code देखें।
+0

लिंक के लिए धन्यवाद। –

+0

मुझे दूसरा दृष्टिकोण पसंद है। – kaptan

+0

एचएम, जब मैंने कोशिश की, तो एनएचआईबी किसी कारण से मेरे संग्रह को ऐरे के रूप में पुनर्निर्मित कर रहा था, इसलिए मैं आइटम जोड़/हटा नहीं सका। यह सिर्फ आईसीओलेक्शन पर देखा और फैसला किया कि यह जो कुछ भी पसंद कर सकता है ... – JustAMartin

2

हां, निबर्ननेट 4 के साथ, System.Collections.Generic.ISet<> का उपयोग कर the way to go है।

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