Search code examples
c#asp.netentity-frameworkasp.net-core-2.1ef-core-2.1

Setting the default value of a DateTime Property to DateTime.Now inside the System.ComponentModel Default Value Attrbute


Does any one know how I can specify the Default value for a DateTime property using the System.ComponentModel DefaultValue Attribute?

for example I try this:

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

And it expects the value to be a constant expression.

This is in the context of using with ASP.NET Dynamic Data. I do not want to scaffold the DateCreated column but simply supply the DateTime.Now if it is not present. I am using the Entity Framework as my Data Layer

Cheers.


Solution

  • You cannot do this with an attribute because they are just meta information generated at compile time. Just add code to the constructor to initialize the date if required, create a trigger and handle missing values in the database, or implement the getter in a way that it returns DateTime.Now if the backing field is not initialized.

    public DateTime DateCreated
    {
       get
       {
          return this.dateCreated.HasValue
             ? this.dateCreated.Value
             : DateTime.Now;
       }
    
       set { this.dateCreated = value; }
    }
    
    private DateTime? dateCreated = null;