2012-04-24 23 views
5

मैं पहले डेटाबेस के साथ ईएफ 4.1 का उपयोग कर रहा हूँ।ईएफ डेटाबेस क्यों पहले getdate() का उपयोग नहीं करते हैं?

उदाहरण तालिका:

CREATE TABLE dbo.Product(
    [ID] [int] IDENTITY(1,1) not null, 
    Title nvarchar(200) not null, 
    CreateDate datetime not null default(getdate()), 
) 

जब मैं एक नई पंक्ति जोड़ना, मैं दिनांक समय प्रकार अतिप्रवाह के बारे में एक अपवाद मिलता है।

डेटाबेस सेटिंग्स के getdate() अमान्य है।

मुझे storeGeneatePatterncreatedate फ़ील्ड Computed पर संपत्ति सेट करनी होगी।

क्या EF स्वचालित रूप से DateTime कॉलम मैन्युअल रूप से सेट किए बिना उत्पन्न करने का कोई तरीका है ??

उत्तर

5

नहीं एफई अपने डेटाबेस डिफ़ॉल्ट का उपयोग कभी नहीं होगा। कारण यह है कि आपकी इकाई में DateTime संपत्ति नहीं है। इस संपत्ति में .NET में डिफ़ॉल्ट रूप से डिफ़ॉल्ट मान निर्धारित किया गया है जो 1.1.0001 है। ईएफ नहीं जानता कि आपने उस मान को असाइन किया है या यदि यह डिफ़ॉल्ट मान है तो यह हमेशा स्पष्ट रूप से डेटाबेस को इस मान को पास करता है। वही होता है यदि आप शून्य प्रकार का उपयोग करते हैं लेकिन इस मामले में ईएफ स्पष्ट रूप से शून्य हो जाएगा। दोनों मामलों में डेटाबेस से डिफ़ॉल्ट मान लागू नहीं किया जाएगा क्योंकि वह मान तभी लागू होता है जब एप्लिकेशन से मूल्य किसी सम्मिलित आदेश में स्पष्ट रूप से पारित नहीं होता है - ईएफ स्पष्ट रूप से इकाई से सभी मानों को पास करता है।

+0

मेरे लिए किसी भी गंभीर आवेदन में ईएफ का उपयोग न करने का पर्याप्त कारण है। – xr280xr

1

आप अपने Product इकाई वर्ग निर्माता में कर सकते हैं,

public class Product{ 
    public Product(){ 
    CreateDate =DateTime.Now; 
    } 
} 
+1

मुझे यह पता है, लेकिन जब कई समान फ़ील्ड होते हैं तो वर्कलोड बहुत बड़ा होता है। क्या ईएफ मैन्युअल रूप से सेट किए बिना डेटाबेस सेटिंग के "getdate()" का उपयोग कर सकता है? –

संबंधित मुद्दे