9

के साथ समय कॉलम का उपयोग करना मेरे पास मेरे SQL Server 2008 डेटाबेस में एक समय कॉलम वाला एक टेबल है।NHibernate, Fluent NHibernate और SQL Server 2008

ऑब्जेक्ट की संपत्ति जिसे मैं मानचित्र बनाने का प्रयास कर रहा हूं वह टाइमस्पेन है।

मैं टाइमएस्टाइमैन एनएचबेर्नेट प्रकार का उपयोग करने के लिए FluentNHibernate कैसे कह सकता हूं, ताकि मुझे कास्ट समस्याएं न हो?

उत्तर

5

और तुम सम्मेलनों उपयोग कर रहे हैं, तो यह मेरे लिए काम करता है:

public class PropertyConvention : IPropertyConvention 
{ 
    public void Apply(IPropertyInstance instance) 
    { 
     if (instance.Property.PropertyType == typeof(TimeSpan)) 
      instance.CustomType("TimeAsTimeSpan"); 
    } 
} 
+0

मेरे लिए भी काम किया। –

1

आपको CustomType का उपयोग करके इसे मानचित्रित करने में सक्षम होना चाहिए।

+0

क्या मैं CustomType में रख सकता हूं? TimeAsTimeSpan या DBType.Time? टाइमएएसटाइमस्पैन के साथ मुझे अपवाद मिलता है क्योंकि इस प्रकार के पास कोई पैरामीटर नहीं है –

+0

लिंक किए गए आलेख की पहली पंक्ति "कस्टम टाइप (" टाइमएएसटाइमस्पैन ") ठीक काम करनी चाहिए"। –

7

यह मेरे लिए काम कर रहा है:

Map(x => x.TimeFrom) 
    .CustomType("TimeAsTimeSpan"); 
+0

यह काम करता है, लेकिन आप डेटाबेस में नल मानों से कैसे निपटते हैं? TimeSpan.Zero नए टाइमस्पैन (0,0,0) के बराबर है, जो काम नहीं करेगा, और NHBernate के TimeAsTimeSpanType द्वारा "00:00:00" के रूप में जारी रहता है। स्रोत-कोड के माध्यम से पोकिंग, यह न्यूल-वैल्यू को संभालने में प्रतीत नहीं होता है? चाहे मैं कॉलम में न्यूल या "00:00:00" डालूं, यह वापस NHSernate से TimeSpan.Zero के रूप में आता है। क्या देता है? –

+3

@ mindplay.dk 'टाइमस्पेन '' शून्य 'का प्रतिनिधित्व नहीं कर सकता है। 'टाइमस्पेन? 'कर सकते हैं। –