दिनांक समय के गुण का डिफ़ॉल्ट मान सेट करने के लिए DateTime.Now System.ComponentModel के लिए डिफ़ॉल्ट मान Attrbute


92

क्या किसी को पता है कि मैं System.ComponentModel DefaultValue विशेषता का उपयोग करके दिनांक समय संपत्ति के लिए डिफ़ॉल्ट मान कैसे निर्दिष्ट कर सकता हूं?

उदाहरण के लिए मैं यह कोशिश करता हूं:

[DefaultValue(typeof(DateTime),DateTime.Now.ToString("yyyy-MM-dd"))]
public DateTime DateCreated { get; set; }

और यह उम्मीद करता है कि मूल्य एक स्थिर अभिव्यक्ति है।

यह ASP.NET डायनामिक डेटा के साथ उपयोग करने के संदर्भ में है। मैं DateCreated कॉलम को मचान नहीं करना चाहता लेकिन केवल DateTime.Now की आपूर्ति करता हूं यदि वह मौजूद नहीं है। मैं अपने डेटा लेयर के रूप में एंटिटी फ्रेमवर्क का उपयोग कर रहा हूं

चीयर्स,

एंड्रयू

जवाबों:


92

आप इसे एक विशेषता के साथ नहीं कर सकते क्योंकि वे संकलन समय पर उत्पन्न मेटा जानकारी मात्र हैं। यदि आवश्यक हो तो दिनांक को इनिशियलाइज़ करने के लिए बस कंस्ट्रक्टर में कोड जोड़ें, एक ट्रिगर बनाएँ और डेटाबेस में गुम वैल्यूज़ को हैंडल करें, या गेटर को इस तरह से लागू करें कि वह DateTime.Now हो जाए यदि बैकिंग फ़ील्ड को इनिशियलाइज़ नहीं किया जाता है।

public DateTime DateCreated
{
   get
   {
      return this.dateCreated.HasValue
         ? this.dateCreated.Value
         : DateTime.Now;
   }

   set { this.dateCreated = value; }
}

private DateTime? dateCreated = null;

2
धन्यवाद, इससे पहले कि आप संपादित करें मैं दूसरे तरीके से चला गया और सेटर को इंटरसेप्ट किया। मदद के लिए चीयर्स :-)
REA_ANDREW 19

10
एक getभाग को सरल बनाया जा सकता है:return dateCreated ?? DateTime.Now;
Vsevolod Krasnov

यह समाधान उस स्थिति में एक समस्या हो सकती है जब आप अपनी कक्षाओं को POCO के रूप में चाहते हैं। मेरे मामले में, मेरी कक्षा डब्ल्यूसीओ के माध्यम से स्थानांतरित होने के लिए पीओसीओ वर्ग के रूप में स्पष्ट होनी चाहिए।
याकूब

1
@zHs ने मेरे लिए डेटाबेस फर्स्ट के साथ एंटिटी फ्रेमवर्क का उपयोग करके बहुत अच्छा काम किया।
जोशुआ के

1
यदि आप एक विशेषता के लिए यहां आए हैं तो कृपया इस उत्तर को देखें ।
स्टॉर्म मुलर

54

डेटटाइम प्रॉपर्टी में नीचे जोड़ें

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

3
यह वास्तव में वही है जो मैं ढूंढ रहा था और इसे ऊंचा उठना चाहिए। किसी अन्य इकाई को सम्मिलित करते समय कई अन्य उत्तर वर्तमान तिथि को जोड़ते हैं, हालाँकि यह स्कीमा (यानी डिफ़ॉल्ट मान) को प्रभावित नहीं करता है। मेरे लिए मुद्दा तब था जब मैं सीधे तालिका में एक रिकॉर्ड जोड़ना चाहता था (एसक्यूएल का उपयोग करके) मुझे तारीख प्रदान करनी थी (या इसे पूरी तरह छोड़ देना चाहिए)। यह एक बेहतर उपाय है। धन्यवाद।
स्टॉर्म मुलर

8
.Computed ऐड और अपडेट क्रियाओं के लिए है। केवल जोड़ें के लिए .Identity का उपयोग करें।
रेनन कोल्हो

1
अब तक का सबसे अच्छा जवाब: यह जोड़ा जाना चाहिए कि System.ComponentModel.DataAnnotations.Schema का एक संदर्भ डेटाबेस के लिए एनोटेशन के साथ जोड़ा जाना चाहिए
Yazan Khalaileh

किस समय क्षेत्र का उपयोग किया जाएगा? क्या यह यूटीसी होगा?
अल्मिस

25

कोई कारण नहीं है कि मैं इसके साथ आ सकता हूं कि यह एक विशेषता के माध्यम से संभव नहीं होना चाहिए। यह Microsoft के बैकलॉग में हो सकता है। कौन जाने।

सबसे अच्छा समाधान जो मैंने पाया है वह कोड पहले माइग्रेशन में defaultValueSql पैरामीटर का उपयोग करना है।

CreateTable(
    "dbo.SomeTable",
    c => new
        {
            TheDateField = c.DateTime(defaultValueSql: "GETDATE()")
        });

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


1
अशक्त उपयोग जोड़ने और जोड़ने के मामले में AddColumn ("dbo.table", "Created", c => c.DateTime (nullable: true, defaultValueSql: "getdate ())));
इमान

यह अच्छा विचार नहीं है, यदि आप अपना db चुनेंगे, तो आपको इस कोड को रिफलेक्टर की आवश्यकता होगी।
lails

21

मैंने ईएफ कोर 2.1 पर इसका परीक्षण किया है

यहां आप कन्वेंशन या डेटा एनोटेशन का उपयोग नहीं कर सकते हैं। आपको धाराप्रवाह एपीआई का उपयोग करना चाहिए ।

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Created)
            .HasDefaultValueSql("getdate()");
    }
}

आधिकारिक डॉक्टर


11

यह संभव है और काफी सरल है:

के लिये DateTime.MinValue

[System.ComponentModel.DefaultValue(typeof(DateTime), "")]

DefaultValueAttributeनिर्दिष्ट तारीख के अंतिम तर्क के रूप में किसी भी अन्य मूल्य के लिए जो वांछित DateTime मान का प्रतिनिधित्व करते हैं।

यह मान स्थिर अभिव्यक्ति होना चाहिए और DateTimeउपयोग करके ऑब्जेक्ट ( ) बनाने के लिए आवश्यक है TypeConverter


मुझे विश्वास है कि उपयोग मेरे लिए काम करता है लेकिन दुर्भाग्य से यह नहीं हुआ। प्रवासन का परिणाम; defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)
अब्दुर्रहमान I.

5

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

namespace EntityExample
{
    public partial class Example : EntityObject
    {
        public Example()
        {
            // Initialize certain default values here.
            this._DateCreated = DateTime.Now;
        }
    }
}

यह अब तक समस्या का सबसे सुरुचिपूर्ण (और शायद इरादा भी) समाधान है। लेकिन यह मान रहा है कि लोग ईएफ कोड फर्स्ट का इस्तेमाल कर रहे हैं।

1
यह है कि मैं इसे कैसे करता हूं, जब तक मुझे एहसास नहीं हुआ कि मेरी इकाई में एक जटिल संपत्ति को जोड़ने से ईएफ एक डिफ़ॉल्ट निर्माता का निर्माण करता है, मुझे अपना खुद का लिखने का कोई रास्ता नहीं छोड़ता है ...
डेव कजिनो

5

मुझे लगता है कि सबसे आसान समाधान सेट करना है

Created DATETIME2 NOT NULL DEFAULT GETDATE()

स्तंभ घोषणा में और VS2010 EntityModel डिजाइनर सेट में इसी स्तंभ संपत्ति StoreGeneratedPattern = परिकलित


यदि मैं इसे इस तरह करता हूं और संपत्ति को अशक्त बना देता हूं, तो मुझे ईडीएमएक्स सत्यापन त्रुटि मिलती है, क्योंकि एक अशक्त स्तंभ को एक अशक्त संपत्ति में मैप किया जाता है।
निकल्स पीटर

4

एक नई विशेषता वर्ग बनाना एक अच्छा सुझाव है। मेरे मामले में, मैं 'डिफ़ॉल्ट (दिनांक समय)' या 'DateTime.MinValue' को निर्दिष्ट करना चाहता था ताकि न्यूटंसॉफ्ट.जॉन धारावाहिककर्ता वास्तविक मूल्यों के बिना डेटटाइम सदस्यों को अनदेखा कर सके।

[JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore )]
[DefaultDateTime]
public DateTime EndTime;

public class DefaultDateTimeAttribute : DefaultValueAttribute
{
    public DefaultDateTimeAttribute()
        : base( default( DateTime ) ) { }

    public DefaultDateTimeAttribute( string dateTime )
        : base( DateTime.Parse( dateTime ) ) { }
}

DefaultValue विशेषता के बिना, JSON serializer "1/1/0001 12:00:00 AM" भले ही DefaultValueHandling.Ignore विकल्प सेट कर रहा था।


4

बस अपने इकाई वर्ग के निर्माता में इसके मूल्य को स्थापित करने पर विचार करें

public class Foo
{
       public DateTime DateCreated { get; set; }
       public Foo()
       {
           DateCreated = DateTime.Now;
       }

}

इसने मेरे लिए काम किया। हालांकि मुझे Datetimeऐसा करने से पहले संपत्ति को अशक्त करना था।
अहसान आलम सोजिब

3

मुझे डिफ़ॉल्ट मान के रूप में UTC टाइमस्टैम्प की आवश्यकता थी और इसलिए इस तरह से डैनियल के समाधान को संशोधित किया गया:

    [Column(TypeName = "datetime2")]
    [XmlAttribute]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
    [Display(Name = "Date Modified")]
    [DateRange(Min = "1900-01-01", Max = "2999-12-31")]
    public DateTime DateModified {
        get { return dateModified; }
        set { dateModified = value; } 
    }
    private DateTime dateModified = DateTime.Now.ToUniversalTime();

DateRangeAttribute ट्यूटोरियल के लिए, इस भयानक ब्लॉग पोस्ट को देखें



2

एक रास्ता है। इन वर्गों को जोड़ें:

DefaultDateTimeValueAttribute.cs

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using Custom.Extensions;

namespace Custom.DefaultValueAttributes
{
    /// <summary>
    /// This class's DefaultValue attribute allows the programmer to use DateTime.Now as a default value for a property.
    /// Inspired from https://code.msdn.microsoft.com/A-flexible-Default-Value-11c2db19. 
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public sealed class DefaultDateTimeValueAttribute : DefaultValueAttribute
    {
        public string DefaultValue { get; set; }
        private object _value;

        public override object Value
        {
            get
            {
                if (_value == null)
                    return _value = GetDefaultValue();

                return _value;
            }
        }

        /// <summary>
        /// Initialized a new instance of this class using the desired DateTime value. A string is expected, because the value must be generated at runtime.
        /// Example of value to pass: Now. This will return the current date and time as a default value. 
        /// Programmer tip: Even if the parameter is passed to the base class, it is not used at all. The property Value is overridden.
        /// </summary>
        /// <param name="defaultValue">Default value to render from an instance of <see cref="DateTime"/></param>
        public DefaultDateTimeValueAttribute(string defaultValue) : base(defaultValue)
        {
            DefaultValue = defaultValue;
        }

        public static DateTime GetDefaultValue(Type objectType, string propertyName)
        {
            var property = objectType.GetProperty(propertyName);
            var attribute = property.GetCustomAttributes(typeof(DefaultDateTimeValueAttribute), false)
                ?.Cast<DefaultDateTimeValueAttribute>()
                ?.FirstOrDefault();

            return attribute.GetDefaultValue();
        }

        private DateTime GetDefaultValue()
        {
            // Resolve a named property of DateTime, like "Now"
            if (this.IsProperty)
            {
                return GetPropertyValue();
            }

            // Resolve a named extension method of DateTime, like "LastOfMonth"
            if (this.IsExtensionMethod)
            {
                return GetExtensionMethodValue();
            }

            // Parse a relative date
            if (this.IsRelativeValue)
            {
                return GetRelativeValue();
            }

            // Parse an absolute date
            return GetAbsoluteValue();
        }

        private bool IsProperty
            => typeof(DateTime).GetProperties()
                .Select(p => p.Name).Contains(this.DefaultValue);

        private bool IsExtensionMethod
            => typeof(DefaultDateTimeValueAttribute).Assembly
                .GetType(typeof(DefaultDateTimeExtensions).FullName)
                .GetMethods()
                .Where(m => m.IsDefined(typeof(ExtensionAttribute), false))
                .Select(p => p.Name).Contains(this.DefaultValue);

        private bool IsRelativeValue
            => this.DefaultValue.Contains(":");

        private DateTime GetPropertyValue()
        {
            var instance = Activator.CreateInstance<DateTime>();
            var value = (DateTime)instance.GetType()
                .GetProperty(this.DefaultValue)
                .GetValue(instance);

            return value;
        }

        private DateTime GetExtensionMethodValue()
        {
            var instance = Activator.CreateInstance<DateTime>();
            var value = (DateTime)typeof(DefaultDateTimeValueAttribute).Assembly
                .GetType(typeof(DefaultDateTimeExtensions).FullName)
                .GetMethod(this.DefaultValue)
                .Invoke(instance, new object[] { DateTime.Now });

            return value;
        }

        private DateTime GetRelativeValue()
        {
            TimeSpan timeSpan;
            if (!TimeSpan.TryParse(this.DefaultValue, out timeSpan))
            {
                return default(DateTime);
            }

            return DateTime.Now.Add(timeSpan);
        }

        private DateTime GetAbsoluteValue()
        {
            DateTime value;
            if (!DateTime.TryParse(this.DefaultValue, out value))
            {
                return default(DateTime);
            }

            return value;
        }
    }
}

DefaultDateTimeExtensions.cs

using System;

namespace Custom.Extensions
{
    /// <summary>
    /// Inspired from https://code.msdn.microsoft.com/A-flexible-Default-Value-11c2db19. See usage for more information.
    /// </summary>
    public static class DefaultDateTimeExtensions
    {
        public static DateTime FirstOfYear(this DateTime dateTime)
            => new DateTime(dateTime.Year, 1, 1, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond);

        public static DateTime LastOfYear(this DateTime dateTime)
            => new DateTime(dateTime.Year, 12, 31, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond);

        public static DateTime FirstOfMonth(this DateTime dateTime)
            => new DateTime(dateTime.Year, dateTime.Month, 1, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond);

        public static DateTime LastOfMonth(this DateTime dateTime)
            => new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month), dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond);
    }
}

और अपने गुणों के लिए DefaultDateTimeValue को एक विशेषता के रूप में उपयोग करें। आपके सत्यापन विशेषता पर इनपुट के लिए मूल्य "अब" जैसी चीजें हैं, जो एक उत्प्रेरक के साथ बनाई गई दिनांक समय आवृत्ति से रन टाइम पर प्रदान की जाएगी। स्रोत कोड इस थ्रेड से प्रेरित है: https://code.msdn.microsoft.com/A-flexible-Default-Value-11c2db19 । मैंने इसे अपनी कक्षा को एक मान्यकरण के बजाय DefaultValueAttribute के साथ विरासत बनाने के लिए बदल दिया।


2

मैंने उसी मुद्दे का सामना किया, लेकिन जो मेरे लिए सबसे अच्छा काम करता है, वह नीचे है:

public DateTime CreatedOn { get; set; } = DateTime.Now;

1

बस यह कुछ अलग खोज रहा है, लेकिन नए C # संस्करण में, आप इसके लिए और भी छोटे संस्करण का उपयोग कर सकते हैं:

public DateTime DateCreated { get; set; } = DateTime.Now;

0
public DateTime DateCreated
{
   get
   {
      return (this.dateCreated == default(DateTime))
         ? this.dateCreated = DateTime.Now
         : this.dateCreated;
   }

   set { this.dateCreated = value; }
}
private DateTime dateCreated = default(DateTime);

0

इस समय आप इससे कैसे निपटते हैं, यह इस बात पर निर्भर करता है कि आप किस मॉडल को Linq to SQL या EntityFramework का उपयोग कर रहे हैं?

L2S में आप जोड़ सकते हैं

public partial class NWDataContext
{
    partial void InsertCategory(Category instance)
    {
        if(Instance.Date == null)
            Instance.Data = DateTime.Now;

        ExecuteDynamicInsert(instance);
    }
}

EF कुछ और अधिक जटिल है देखें Ems buisiness लॉजिक पर अधिक जानकारी के लिए http://msdn.microsoft.com/en-us/library/cc716714.aspx देखें ।


0

मुझे पता है कि यह पोस्ट थोड़ी पुरानी है, लेकिन एक सुझाव है जो कुछ मदद कर सकता है।

मैंने एक एनुम का उपयोग यह निर्धारित करने के लिए किया कि विशेषता निर्माता में क्या सेट किया जाए।

संपत्ति की घोषणा:

[DbProperty(initialValue: EInitialValue.DateTime_Now)]
public DateTime CreationDate { get; set; }

संपत्ति निर्माता:

Public Class DbProperty Inherits System.Attribute

    Public Property InitialValue As Object

    Public Sub New(ByVal initialValue As EInitialValue)
       Select Case initialValue
          Case EInitialValue.DateTime_Now
             Me.InitialValue = System.DateTime.Now

          Case EInitialValue.DateTime_Min
             Me.InitialValue = System.DateTime.MinValue

          Case EInitialValue.DateTime_Max
             Me.InitialValue = System.DateTime.MaxValue

       End Select

    End Sub
End Class

एनम:

Public Enum EInitialValue
   DateTime_Now
   DateTime_Min
   DateTime_Max
End Enum

0

मुझे लगता है कि आप इसका उपयोग कर सकते हैं StoreGeneratedPattern = Identity(मॉडल डिजाइनर गुण विंडो में सेट)।

मैंने अनुमान नहीं लगाया होगा कि यह कैसे करना है, लेकिन यह पता लगाने की कोशिश करते समय मैंने देखा कि मेरे कुछ डेट कॉलम पहले से ही डिफ़ॉल्ट CURRENT_TIMESTAMP()थे और कुछ नहीं थे। मॉडल की जांच करते हुए, मैं देखता हूं कि नाम के अलावा दो कॉलमों के बीच एकमात्र अंतर यह है कि डिफ़ॉल्ट मूल्य प्राप्त StoreGeneratedPatternकरने वाला व्यक्ति सेट हो गया हैIdentity

मुझे उम्मीद नहीं थी कि यह तरीका होगा, लेकिन विवरण पढ़ने से यह समझ में आता है:

निर्धारित करता है कि डेटाबेस में संबंधित कॉलम डालने और अद्यतन कार्यों के दौरान ऑटो-जनरेट किया जाएगा।

इसके अलावा, जबकि यह डेटाबेस कॉलम को "अब" का एक डिफ़ॉल्ट मान है, मुझे लगता है कि यह वास्तव DateTime.Nowमें पीओसीओ में होने वाली संपत्ति को निर्धारित नहीं करता है । यह मेरे लिए कोई समस्या नहीं है क्योंकि मेरे पास एक अनुकूलित .tt फ़ाइल है जो पहले से ही मेरी सभी दिनांक कॉलमों को सेट करती हैDateTime.Now स्वचालित रूप कर देती है (यह वास्तव में .tt फ़ाइल को स्वयं को संशोधित करना मुश्किल नहीं है, खासकर यदि आपके पास ReSharper है और एक सिंटैक्स हाइलाइटिंग प्राप्त करें प्लगइन। (वीएस का नया संस्करण पहले से ही सिंटैक्स हाइलाइट .tt फ़ाइलें हो सकता है, निश्चित नहीं है।))

मेरे लिए मुद्दा यह था: मैं डेटाबेस कॉलम को डिफ़ॉल्ट रूप से कैसे प्राप्त करूं ताकि मौजूदा प्रश्न जो उस कॉलम को छोड़ दें, वह अभी भी काम करेगा? और इसके लिए उपरोक्त सेटिंग ने काम किया।

मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन यह भी संभव है कि इसे सेट करने से आपका स्वयं का स्पष्ट मान सेट हो जाए। (मैं केवल इस पर पहली बार में ठोकर खाई क्योंकि EF6 डेटाबेस फर्स्ट ने मेरे लिए इस तरह से मॉडल लिखा था।)


0

C # संस्करण 6 में डिफ़ॉल्ट मान प्रदान करना संभव है

public DateTime fieldname { get; set; } = DateTime.Now;

1
StackOverflow में आपका स्वागत है: यदि आप कोड, XML या डेटा नमूने पोस्ट करते हैं, तो कृपया टेक्स्ट एडिटर में उन पंक्तियों को हाइलाइट करें और एडिटर टूलबार पर "कोड नमूने" बटन ({}) पर क्लिक करें या अपने कीबोर्ड पर Ctrl + K का उपयोग करके अच्छी तरह से फॉर्मेट करें। और वाक्य रचना इसे उजागर!
WhatsThePoint


-1

EF 7 के साथ:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Column(TypeName = "datetime2")]
DateTime? Dateadded { get; set; }

माइग्रेशन स्क्रिप्ट:

AlterColumn("myschema.mytable", "Dateadded", c => c.DateTime(nullable: false, precision: 7, storeType: "datetime2", defaultValueSql: "getutcdate()"));

परिणाम:

ALTER TABLE [MySchema].[MyTable] ADD  CONSTRAINT [DF_MySchema.MyTable_Dateadded]  DEFAULT (getutcdate()) FOR [Dateadded]

EF 7 मौजूद नहीं है, एक डेटटाइम कॉलम पहचान नहीं हो सकता है, और एनोटेशन उस माइग्रेशन स्क्रिप्ट को नहीं बनाता है। और माइग्रेशन स्क्रिप्ट को मैन्युअल रूप से बदलना आवश्यक नहीं है, यदि आपका यही मतलब है। ऐसे एनोटेशन हैं जो डिफ़ॉल्ट को जोड़ते हैं, जैसा कि यहां पहले से ही उत्तर दिया गया था।
गर्ट अर्नोल्ड

-5

मैं भी यही चाहता था और इस समाधान के साथ आया था (मैं केवल दिनांक भाग का उपयोग कर रहा हूं - एक डिफ़ॉल्ट समय प्रॉपर्टीग्रिड डिफ़ॉल्ट के रूप में कोई मतलब नहीं है):

public class DefaultDateAttribute : DefaultValueAttribute {
  public DefaultDateAttribute(short yearoffset)
    : base(DateTime.Now.AddYears(yearoffset).Date) {
  }
}

यह सिर्फ एक नई विशेषता बनाता है जिसे आप अपनी डेटटाइम प्रॉपर्टी में जोड़ सकते हैं। जैसे अगर यह DateTime.Now.Date को चूकता है:

[DefaultDate(0)]

31
चेतावनी !!!!!! यह बहुत बुरा है और इसे एसओ से हटा दिया जाना चाहिए। मैंने इस सुझाव के कारण केवल घंटों डिबगिंग मुद्दों को बिताया। पहली नज़र में, यह अच्छा लग रहा है और काम करने लगता है। लेकिन यह एक जाल है। गुण एक कारण के लिए स्थैतिक मूल्यों की आवश्यकता होती है। वे एक बार आरंभिक होते हैं। उसके बाद, मान बदलता है। इसलिए जब आप बनाएंगे पहला उदाहरण ठीक लगेगा, और बाद के उदाहरण ठीक दिखाई देंगे, वे सभी वास्तव में पहले मूल्य का उपयोग करते हैं। एक बार जब आपका ऐप थोड़ी देर के लिए चलता है, तो आप इस मुद्दे को नोटिस करेंगे और आश्चर्य करेंगे कि क्यों। और डिबग में, जब आप इसे एक मिनट के लिए चलाते हैं, तो यह ठीक चलेगा। सावधान!
क्रिस हाइन्स

3
क्रिस सही है। मैंने वही समस्या पाई। इस उत्तर का उपयोग न करें
sohtimsso1970
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.