首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在System.ComponentModel缺省值属性中将DateTime属性的默认值设置为DateTime.Now

在System.ComponentModel缺省值属性中将DateTime属性的默认值设置为DateTime.Now
EN

Stack Overflow用户
提问于 2009-03-27 18:49:39
回答 24查看 198.1K关注 0票数 120

有人知道如何使用System.ComponentModel DefaultValue属性指定DateTime属性的默认值吗?

例如,我尝试这样做:

代码语言:javascript
复制
[DefaultValue(typeof(DateTime),DateTime.Now.ToString("yyyy-MM-dd"))]
public DateTime DateCreated { get; set; }

它希望该值是一个常量表达式。

这是在使用ASP.NET动态数据的上下文中进行的。我不想搭建DateCreated列,但如果DateTime.Now不存在,则只需提供它。我使用实体框架作为我的数据层

干杯,

安德鲁

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2009-03-27 18:51:38

您不能使用属性来做到这一点,因为它们只是在编译时生成的元信息。如果需要,只需向构造函数添加代码以初始化日期,创建触发器并处理数据库中的缺失值,或者实现getter,如果支持字段未初始化,则返回DateTime.Now。

代码语言:javascript
复制
public DateTime DateCreated
{
   get
   {
      return this.dateCreated.HasValue
         ? this.dateCreated.Value
         : DateTime.Now;
   }

   set { this.dateCreated = value; }
}

private DateTime? dateCreated = null;
票数 105
EN

Stack Overflow用户

发布于 2017-05-19 20:39:18

将以下内容添加到DateTime属性

代码语言:javascript
复制
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
票数 77
EN

Stack Overflow用户

发布于 2018-09-22 17:54:39

我已经在EF core 2.1上进行了测试

在这里,您既不能使用约定也不能使用数据注释。您必须使用Fluent API

代码语言:javascript
复制
class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Created)
            .HasDefaultValueSql("getdate()");
    }
}
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/691035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档