2009-03-12 16 views
5

के साथ NHibernate में uint को कैसे मैप करें मेरे पास मेरी इकाई पर यूंट की प्रकार है। कुछ की तरह:एसक्यूएल सर्वर 2005

public class Enity 
{ 
    public uint Count {get;set;} 
} 

जब मैं लागू करने के लिए है कि एसक्यूएल सर्वर में 2005 डेटाबेस की कोशिश, मैं एक अपवाद मिल

बोली DbType.UInt32

का समर्थन नहीं करता होगा क्या इसे हल करने का सबसे आसान तरीका। उदाहरण के लिए मैं इसे डीबी में लंबे समय तक स्टोर कर सकता हूं। मुझे केवल यह नहीं पता कि एनएचबीर्नेट को कैसे बताना है।

उत्तर

4

साफ, सबसे आधिकारिक समाधान शायद एक उपयोगकर्ता प्रकार लिखने के लिए होगा।

उदाहरण लें, जैसे this one और इसे अनुकूलित करें। यदि आपके पास uint है, तो उपयोगकर्ता का प्रकार होना उचित है।

<property name="Prop" type="UIntUserType"/> 
+0

हाँ, यही वह अंततः मैं कर रहा था। आप सभी को मदद दोस्तों के लिए धन्यवाद। –

1
<property name="Prop" type="long"/> 
+0

तो किया जा सकता है आप समस्या को थोड़ा बेहतर –

+0

मेरे लिए यह * * था काम ... प्रकार के साथ = "लंबे" SchemaExport क्षेत्र BIGINT –

+0

के रूप में निर्यात करता है आप NHibernate का कौन सा संस्करण का उपयोग करते हैं का वर्णन करना चाहिए? –

0

आप एक और निजी "दर्पण" -प्रोपर्टी जोड़ने की कोशिश कर सकते हैं।

public class Enity 
{ 
    public uint Count {get;set;} 

    private long CountAsLong 
    { 
    get { return Convert.ToInt64(Count); } 
    set { Count = Convert.ToUInt(value); } 
    } 
} 

<property name="CountAsLong" type="long"/> 

बेशक आप इस केवल क्या करना चाहिए यह मानचित्रण द्वारा हल नहीं किया जा सकता है अगर।

2

इस आज़माया नहीं इतना यकीन नहीं इस करता है, तो आप के लिए काम करेंगे, लेकिन आप अपने खुद के बोली बनाने और पंजीकृत करने का प्रयास कर सकता है कि web.config/app.config

बोली कक्षा में:

public class MyDialect:MsSql2005Dialect 
{ 
    public MyDialect() 
    {    
     RegisterColumnType(System.Data.DbType.UInt32, "bigint");    
    } 
} 

Web.config:

configuration> 
<configSections> 
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> 
</configSections> 

       <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property> 
    <property name="connection.connection_string"> 
    Server=127.0.0.1; Initial Catalog=thedatabase; Integrated Security=SSPI 
    </property> 
    <property name="dialect">MyDialect</property> 
    <property name="current_session_context_class">managed_web</property> 
    </session-factory> 
</hibernate-configuration> 
    <!-- other app specific config follows --> 

</configuration> 
संबंधित मुद्दे