2011-06-24 14 views
5

मैं एंटिटी फ्रेमवर्क (और एएसपीएनटी एमवीसी 3) के लिए काफी नया हूं और यह पहले मेरा पहला अनुभव है EF4.1 कोड के साथ।इकाई फ्रेमवर्क 4.1 स्वचालित दिनांक

मेरा प्रश्न सरल है: जब मैं मॉडल के माध्यम से उत्पन्न डेटाबेस के लिए एक नई तालिका मैं

  1. स्वचालित रूप से एक क्षेत्र के लिए वर्तमान दिनांक जोड़ने जब एक नई पंक्ति बनाई गई है बनाने के लिए चाहते हैं।
  2. फ़ील्ड अपडेट होने पर हर बार फ़ील्ड को स्वचालित रूप से अपडेट करें।

वास्तव में, चर प्रतीत होता है जैसे:

[DisplayName("Data Modifica")] 
[DataType(DataType.DateTime)] 
[DisplayFormat(DataFormatString = "{0:d}")] 
public DateTime DataModifica { get; set; } 

मुझे लगता है कि मैं DataContext की "OnModelCreating" घटना पर कुछ लिख सकता है लेकिन मैं बहुत पहले से ही महारत हासिल करने के लिए इस :) नया हूँ

कर सकते हैं कोई मदद करता है? पहले से

धन्यवाद, वी

उत्तर

10

मॉडल के निर्माण के साथ कोई संबंध नहीं है यही कारण है कि। "मॉडल" कक्षाओं और डेटाबेस के बीच आपके मानचित्रण का विवरण है। OnModelCreating का उपयोग मैपिंग परिभाषा को संशोधित करने के लिए किया जाता है, डेटा को संशोधित नहीं करने के लिए। इकाई इकाई में डेटा के साथ इसका कोई लेना-देना नहीं है।

आप स्वत: संशोधन आप SaveChanges ओवरराइड कर सकते हैं चाहते हैं:

public override int SaveChanges() 
{ 
    DateTime now = DateTime.Now; 
    foreach (var entity in ChangeTracker.Entries<YourEntityType>() 
             .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified) 
             .Select(e => e.Entity)) 
    { 
      entity.DateModifica = now; // set the date 
    } 

    return base.SaveChanges(); 
} 
+0

धन्यवाद। यह बेहद जरूरी है कि मुझे क्या चाहिए। – Valerio

0

क्यों एक समर्थन क्षेत्र है, जो डिफ़ॉल्ट मान पर आरंभ नहीं हो जाता के साथ एक होने की संपत्ति को परिभाषित नहीं?

private DateTime _dateOfRequest = DateTime.Today; 
    [Display(Name = "Date of Request"), DataType(DataType.Date)] 
    public System.DateTime DateOfRequest { 
     get { return _dateOfRequest; } 
     set { _dateOfRequest = value; } 
    } 
+2

मुझे लगता है कि इस दृष्टिकोण की कमी यह होगी कि फ़ील्ड में संग्रहीत डेटाटाइम इंगित करेगा कि इंस्टेंस बनाया गया था, न कि जब यह डेटाबेस पर जारी था। यह एक छोटा सा अंतर है, लेकिन यह आपके आवेदन के आधार पर महत्वपूर्ण हो सकता है। – edsobo

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