मैं उपयोगकर्ता वरीयताओं को नाम मूल्य जोड़ों के संग्रह में कायम रखने के लिए देख रहा हूं, जहां मान int, bool, या स्ट्रिंग हो सकता है।Fluent NHibernate में IDictionary <string, object> को कैसे मैप करें?
इस बिल्ली त्वचा के लिए कुछ तरीके हैं, लेकिन सबसे सुविधाजनक तरीका मैं के बारे में सोच सकते हैं कुछ इस तरह है: के रूप में इसके उपयोग के साथ
public class User
{
public virtual IDictionary<string, object> Preferences { get; set; }
}
:
user.Preferences["preference1"] = "some value";
user.Preferences["preference2"] = 10;
user.Preferences["preference3"] = true;
var pref = (int)user.Preferences["preference2"];
मैं यह सुनिश्चित नहीं है कि फ्लुएंट एनएचबर्ननेट में इसे कैसे मैप करें, हालांकि मुझे लगता है कि यह संभव है।
आम तौर पर, यदि आप इससे आसान शब्दकोश < स्ट्रिंग के रूप में स्ट्रिंग > नक्शा होगा,:
HasMany(x => x.Preferences)
.Table("Preferences")
.AsMap("preferenceName")
.Element("preferenceValue");
लेकिन 'वस्तु' का एक प्रकार के साथ, NHibernate इसके साथ सौदा करने के लिए कैसे पता नहीं है। मुझे लगता है कि कस्टम यूजर टाइप टाइप किया जा सकता है जो एक 'ऑब्जेक्ट' को स्ट्रिंग पर टाइप करता है जो उसके प्रकार का प्रतिनिधित्व करता है और एक स्ट्रिंग मान का प्रतिनिधित्व करता है। हम एक मेज है कि इस तरह तरह का लग रहा है होगा:
Table Preferences
userId (int)
preferenceName (varchar)
preferenceValue (varchar)
preferenceValueType (varchar)
और हाइबरनेट मानचित्रण इस चाहते हैं:
<map name="Preferences" table="Preferences">
<key column="userId"></key>
<index column="preferenceName" type="String" />
<element type="ObjectAsStringUserType, Assembly">
<column name="preferenceValue" />
<column name="preferenceValueType"/>
</element>
</map>
मुझे यकीन है कि कैसे आप धाराप्रवाह NHibernate में इस नक्शे हैं नहीं कर रहा हूँ।
शायद ऐसा करने का एक बेहतर तरीका है, या शायद मुझे इसे चूसना चाहिए और IDictionary < स्ट्रिंग, स्ट्रिंग > का उपयोग करना चाहिए। कोई विचार?
क्या आपको कोई समाधान मिला? –
धन्यवाद, बस मैं जो देख रहा था – jolySoft