2012-05-02 4 views
12

मुझे एक मानचित्रण मिला है जो IPAddress ऑब्जेक्ट फ़ील्ड को डेटाबेस में मैप करता है।पोस्टग्रेएसक्यूएल में आईएनईटी प्रकार के रूप में आईपैड्रेस मैपिंग के लिए टेबल जेनरेट करें?

inet इसके लिए उपयुक्त PostgreSQL में टाइप है, लेकिन मेरे मामले में यह स्कीमा उत्पन्न करते समय bytea प्रकार का उपयोग करता है।

क्या इस कॉलम के लिए उत्पन्न उत्पन्न स्कीमा प्रकार को inet वास्तव में डीबी में लागू करने का कोई तरीका है?

मैं भी समग्र आईडी पर इस आवश्यकता (whicg की आवश्यकता है)

CompositeId() 
.KeyProperty(x => x.Date, "for_date") 
.KeyProperty(x => x.Address, var => var.ColumnName("ipaddress")); 

आप वास्तव में नहीं कर सकते कुंजी संपत्ति ओर से CustomSqlType का उपयोग करने के लिए होता है।

मैं भी

public class IPAddressPropertyConvention : IPropertyConvention 
{ 
    public void Apply(IPropertyInstance instance) 
    { 
     if (instance.Property.PropertyType == typeof(IPAddress)) 
      instance.CustomSqlType("inet"); 
    } 
} 

उपयोग करने की कोशिश लेकिन मैं अवैध संपत्ति सम्मेलन के बारे में अपवाद

+0

अगर मैं सवाल समझ में देखते हैं मिलता है। आप 'nhibernate' का उपयोग कर डेटाबेस स्कीमा जेनरेट करना चाहते हैं, और जब आप' धाराप्रवाह 'में ऐसा करने के लिए कोड लिखने का प्रयास करते हैं, तो यह' बाइटा 'प्रकार का कॉलम उत्पन्न करता है। आप इसके बजाय 'inet' प्रकार का कॉलम उत्पन्न करेंगे। क्या वह सही है? –

+0

@Catcall हाँ, ठीक है यह। –

उत्तर

4
Map(x => x.IPAddress) 
    .CustomSqlType("inet") 
    .CustomType<IPAddressToInetUserType>(); // maybe needed, you should check 
+0

क्या यह एक कामकाजी समाधान है या माना जाता है कि काम कर रहा है? क्योंकि यह मेरे लिए काम नहीं करता है मुझे लगता है। –

+0

कस्टम प्रकार मैपिंग करते समय यह जाने का तरीका है। यह कई अन्य प्रकार के लिए काम कर रहा है इसलिए यह शायद यहां भी काम करता है। ** नोट: चूंकि यह एक महत्वपूर्ण संपत्ति है जिसके लिए आपको IIDConvention ** – Firo

+0

की आवश्यकता है, हाइबरनेट के लिए एक समान मामला है https://forum.hibernate.org/viewtopic.php?f=1&t=984186 – Firo

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