7

मेरे पास DateCreated और DateUpdated स्तंभों के साथ एक तालिका है और डेटाबेस में मान डालने/अपडेट करने के लिए इकाई फ्रेमवर्क का उपयोग कर रहा है।इकाई फ्रेमवर्क दिनांक समय कॉलम - GetDate() मान सम्मिलन

मुझे केवल SQL सर्वर के GetDate() मान प्रविष्टि प्राप्त करने के लिए DateCreated कॉलम की आवश्यकता है।

DateUpdated कॉलम मान को हमेशा सम्मिलन पर वर्तमान GetDate() मान के साथ अपडेट किया जाना चाहिए और दोनों को अपडेट करना चाहिए।

DateCreated कॉलम के लिए, मैंने StoreGeneratedPattern="Computed" सेट किया है और SQL सर्वर तालिका पर मैंने कॉलम का डिफ़ॉल्ट मान GetDate() होने के लिए सेट किया है, जो अपेक्षाकृत अच्छी तरह से काम करता है।

DateUpdated कॉलम के लिए मुझे GetDate() मान प्राप्त करने का कोई तरीका नहीं मिल सका जब प्रत्येक बार एक प्रविष्टि अपडेट हो जाती है। यह मान केवल तभी सेट होता है जब एक प्रविष्टि डाली जाती है।

क्या कोई इस पर कुछ प्रकाश डाल सकता है।

+0

आप की कोशिश की 'StoreGeneratedPattern =" पहचान "' है? –

+1

दिनांकित काम के लिए डीबी डिफ़ॉल्ट के रूप में क्यों नहीं मिलता है? यदि आप इसे अपडेट नहीं करते हैं तो इसे ओवरराइट नहीं करना चाहिए ... –

+0

मैं डीएमओएस से सहमत हूं - डिफ़ॉल्ट मान केवल पंक्ति निर्माण पर आबादी है। –

उत्तर

7

यदि आप डेटाबेस द्वारा सेट करने के लिए DateUpdated चाहते हैं, तो आप मान को getdate() पर सेट करने के लिए एक ट्रिगर का उपयोग कर सकते हैं। मेरा मानना ​​है कि ईएफ को ट्रिगर द्वारा मूल्य निर्धारित भी किया जाएगा यदि आप StoreGeneratedPattern="Computed"DateUpdated के लिए सेट करते हैं।

संदर्भ के लिए, आपके ट्रिगर कुछ इस तरह दिखेगा (आप अपनी तालिका के पी प्रति से अपडेट करना होगा):

create trigger MyTable_UpdatedTrigger 
on MyTable 
for update 
as 
begin 
    update t set DateUpdated = getdate() 
    from MyTable t 
     join inserted i on t.Id = i.Id 
end 
संबंधित मुद्दे