2009-10-15 13 views
6

के लिए डिफ़ॉल्ट मान सेट करना किसी को भी पता है कि मैं कॉलम के डिफ़ॉल्ट मान मैपिंग के माध्यम से कैसे सेट कर सकता हूं, उदाहरण के लिए जब मैं मैपिंग से डीबी उत्पन्न करता हूं तो मेरे पास डेटटाइम कॉलम होगा जो getdate() को डिफ़ॉल्ट मान के रूप में रखता है?FluentNHibernate - डीबी कॉलम (SQL सर्वर)

मैं बहुत कोशिश की अब तक इस (exactlly मैं क्या जरूरत है की तरह लग रहा है), लेकिन यह

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 
+0

मैं एक ही है धाराप्रवाह 1.0 में मुद्दा और वहां से नहीं है एक समाधान होने के लिए - आप इसे घटनाओं के माध्यम से कर सकते हैं लेकिन यह हमेशा उपयुक्त नहीं है। कोई और? – row1

+0

[NHibernate + डिफ़ॉल्ट getdate() कॉलम के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/1145197/nhibernate-default-getdate-column) –

उत्तर

6

मैं बस कुछ मूलभूत मूल्यों की स्थापना की कोशिश की सुनने के लिए अच्छा होगा और यह उम्मीद के रूप में काम किया। मैं 24.05.2010 को गिट से पुनर्प्राप्त करने के रूप में फ्लुएंट का उपयोग कर रहा हूं, इसलिए आपकी प्रति अपडेट करने से आपकी समस्या हल हो सकती है।
मानचित्रण

public class SampleEntity 
{ 
    public virtual DateTime DateTimeProperty { get; set; } 
} 

साथ

public class SampleEntityMap 
     : ClassMap<SampleEntity> 
{ 
    public SampleEntityMap() 
    { 
    Map(x => x.DateTimeProperty, "DateTimeColumn") 
      .Access.Property() //actually not necessary 
      .Not.Nullable() 
      .Default("getDate()"); 
    } 
} 

इस निम्नलिखित एसक्यूएल (उत्पादन से कंसोल के लिए)

create table SampleEntity(
    DateTimeColumn DATETIME default getDate() not null 
) 

का उत्पादन करेगा -
Dom

4

काम नहीं करता है जिस तरह से यह करने के लिए कर रहा है बल्कि में डिफ़ॉल्ट मान का उपयोग करने से कोड में वर्तमान दिनांक समय आवंटित करने के लिए डेटाबेस। फिर इसे सामान्य कॉलम के रूप में देखें। मॉडल-संचालित डिज़ाइन पृष्ठभूमि से पहले आने पर मुझे थोड़ा अजीब लगा, लेकिन पीओसीओ स्तर पर डिफ़ॉल्ट मानों का प्रबंधन करना डीडीडी तरीका है।

दूसरों की राय भी

+1

मेरे साथ यह समस्या यह है कि यह उपयोगकर्ताओं की घड़ी पर निर्भर करता है। यदि अंतिम उपयोगकर्ता नहीं है यदि आपके पास दो अलग-अलग समय क्षेत्र में चल रहा एप्लिकेशन है, तो यह पहले से ही जटिल है। – hometoast

+0

मौजूदा डेटा के बारे में सोचने के लिए कुछ और है। मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यदि आप किसी मौजूदा वर्ग/तालिका/मानचित्र में कोई नया फ़ील्ड जोड़ रहे हैं, तो आप हमेशा डिफ़ॉल्ट मान को डिफ़ॉल्ट रूप से नहीं चाहते हैं (उदाहरण के लिए एक बूलियन कॉलम जिसे आप चाहते हैं सभी मौजूदा रिकॉर्ड में डिफ़ॉल्ट होने के लिए डिफ़ॉल्ट) – DevTheo