2010-04-05 13 views
5

में एक रोवर्सन विशेषता कैसे जोड़ूं मैं ईएफ 4 का उपयोग कर रहा हूं और इकाई डिजाइन सतह के माध्यम से कक्षाएं बना रहा हूं और फिर डेटाबेस से उत्पन्न कर रहा हूं। मैं आखिरी अपडेट किए गए टाइमस्टैम्प को दिखाने के लिए कुछ कक्षाओं में एक विशेषता जोड़ना चाहता हूं।मैं एक ईएफ 4 कक्षा

मैंने उन्हें एक संस्करण विशेषता जोड़ा है, लेकिन मुझे नहीं पता कि .NET डेटाटाइप उनके साथ जुड़ने के लिए ताकि वे जेनरेट होने पर डेटाबेस में टाइमस्टैम्प या रोवर्सियन बन जाए।

कोई विचार?

+0

जब आप अन्य रास्ता तय (DB -> मॉडल) प्रकार 'है बाइट []' (कोड में) और "बाइनरी" (ईडीएमएक्स में)। –

+0

@ क्रेग - जब आप मॉडल से डीबी को पुन: उत्पन्न करते हैं, तो टाइमस्टैम्प कॉलम बाइनरी कॉलम में बदल जाता है और आप जिस व्यवहार को मैं ढूंढ रहा हूं उसे खो देता हूं। –

+0

स्पष्ट होने के लिए, एक SQL सर्वर 'TIMESTAMP' बिल्कुल समय नहीं है। क्या आप यही चाहते हैं, या आप एक समय चाहते हैं? मुझे लगता है कि आप 'टाइमस्टैम्प' चाहते थे, जो वास्तव में बाइनरी है। –

उत्तर

4

आप rowversion/टाइमस्टैम्प के लिए byte[] प्रकार का उपयोग

उदाहरण उपयोग: http://www.ienablemuch.com/2011/07/using-checkbox-list-on-aspnet-mvc-with_16.html

आप डिजाइनर में हैं, तो बस में टाइप byte[] या System.Byte[], मुझे लगता है कि एफई डिजाइनर पर फ़ील्ड प्रकार लटकती चयन किया जा सकता है टाइप किया गया

इस DDL

create table Movie 
(
MovieId int identity(1,1) not null primary key, 
MovieName varchar(100) not null unique, 
MovieDescription varchar(100) not null unique, 
YearReleased int not null, 
Version rowversion -- rowversion and timestamp are alias of each other 
); 

यह देखते हुए वर्ग मानचित्रण है:

public class Movie 
{ 
    [Key] 
    public virtual int MovieId { get; set; } 
      
    [   Required, Display(Name="Title") 
    ]   public virtual string MovieName { get; set; } 
      
    [   Required, Display(Name="Description") 
    ]   public virtual string MovieDescription { get; set; } 
      
    [   Required, Display(Name="Year Released"), Range(1900,9999) 
    ]   public virtual int? YearReleased { get; set; } 
      
    [Timestamp] 
    // byte[] is the rowversion/timestamp .NET type 
    public virtual byte[] Version { get; set; } 
  
      
    public virtual IList<Genre> Genres { get; set; }              
} 
+2

ओह ओह .., मैं पिछले साल के सवाल का जवाब दे रहा हूं: डी –

3

जहाँ तक मुझे पता है, पंक्तिवर्ती एक सापेक्ष बाइनरी मान है, वास्तविक समय मान नहीं। यह होता है कि हर डालने और अद्यतन के लिए यह वृद्धि करता है। यह आपको यह निर्धारित करने के लिए मूल्यों की तुलना करने की अनुमति देता है कि कौन सा रिकॉर्ड नया है। चूंकि यह सापेक्ष है, एक एकल पंक्तिवर्ती मान दिया गया है, आपको कुछ भी पता नहीं चलेगा, लेकिन दो पंक्तियों के मूल्य दिए गए हैं, आपको पता चलेगा कि कौन सा पुराना है और जो नया है, लेकिन कितना नहीं।

मुझे नहीं पता कि .NET डेटाटाइप उनके साथ जुड़ने के लिए है ताकि वे जेनरेट होने पर डेटाबेस में टाइमस्टैम्प या रोवर्सियन बन जाए।

मुझे यकीन नहीं है, लेकिन संभवतः एक डेटाटाइप नहीं है जो मॉडल से डेटाबेस पर जाने पर आपको पंक्ति प्रदान करेगा। आपको डेटाबेस फ़ील्ड प्रकार को स्वयं बदलना होगा, या डीबी में फ़ील्ड जोड़ना होगा और रिकॉर्ड को अपने मॉडल पर ले जाना होगा। आप डीडीएल भी उत्पन्न कर सकते हैं और इसके बाद डीबी बनाने से पहले इसे संशोधित कर सकते हैं।

एक और तरीका भी है जहां आप इसकी कक्षाओं से प्राप्त ईएफ प्रक्रिया की कार्यक्षमता बढ़ा सकते हैं। फिर आप इसे स्वयं चुन सकते हैं, लेकिन मैं ऐसा करने के बारे में बहुत परिचित नहीं हूं।

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