निम्नलिखित सरल सी # वर्ग पर विचार करें:नई इकाई को सहेजते समय NHibernate डेटाबेस-डिफ़ॉल्ट मान का उपयोग कैसे कर सकता है?
public class Entity
{
public Entity() { }
public virtual int Id { get; private set; }
public virtual DateTime DateCreated { get; private set; }
}
निम्नलिखित सरल NHibernate मैपिंग के साथ मैप किया गया:
<class name="Entity" mutable="false">
<id name="Id">
<generator class="native">
</id>
<property name="DateCreated"/>
</class>
निम्न सरल डेटाबेस स्कीमा के लिए:
CREATE TABLE Entity (
Id int IDENTITY(1,1) PRIMARY KEY,
DateCreated datetime NOT NULL DEFAULT getUtcDate()
)
जब कोई नया उदाहरण बनाते हैं Entity
और डेटाबेस को सहेजते हुए, आप DateCreated
कॉलम के लिए डेटाबेस के डिफ़ॉल्ट मान का उपयोग करने के लिए NHibernate को कैसे निर्देश देते हैं यदि इसका मान null
है? वैकल्पिक रूप से, मैं कैसे निर्दिष्ट कर सकता हूं कि एनएचबीर्नेट को getUtcDate()
फ़ंक्शन के परिणाम का उपयोग प्रविष्टि पर DateCreated
फ़ील्ड के मान के रूप में करना चाहिए?
जबकि मैं आसानी से
DateCreated = DateTime.Now;
को एंटिटी कन्स्ट्रक्टर में जोड़ सकता हूं, यह एप्लिकेशन सर्वर की स्थानीय घड़ी का उपयोग कर रहा है, और मुझे डेटाबेस की स्थानीय घड़ी का उपयोग स्थिरता सुनिश्चित करने के लिए करना होगा जब प्रत्येक एप्लिकेशन एकाधिक सर्वर हो उनके संभावित गैर सिंक्रनाइज़ स्थानीय घड़ियों।
nhibernate सवाल का जवाब नहीं कर सकते हैं, लेकिन सामान्य रूप में आप यूटीसी के रूप में अपने डेटाबेस में दिनांक स्टोर करने के लिए चाहता हूँ। इससे कोई फर्क नहीं पड़ता कि उनका स्रोत क्या है, यूटीसी सभी सर्वरों में समान है (मानते हुए घड़ियों सटीक हैं)। –
सामान्य रूप से, हाँ, सहमत हो गया। यही कारण है कि मैंने प्रश्न में getDate() के बजाय getUtcDate() निर्दिष्ट किया। :) – iammichael