有人知道如何使用System.ComponentModel DefaultValue属性指定DateTime属性的默认值吗?
例如,我尝试这样做:
[DefaultValue(typeof(DateTime),DateTime.Now.ToString("yyyy-MM-dd"))]
public DateTime DateCreated { get; set; }它希望该值是一个常量表达式。
这是在使用ASP.NET动态数据的上下文中进行的。我不想搭建DateCreated列,但如果DateTime.Now不存在,则只需提供它。我使用实体框架作为我的数据层
干杯,
安德鲁
发布于 2009-03-27 18:51:38
您不能使用属性来做到这一点,因为它们只是在编译时生成的元信息。如果需要,只需向构造函数添加代码以初始化日期,创建触发器并处理数据库中的缺失值,或者实现getter,如果支持字段未初始化,则返回DateTime.Now。
public DateTime DateCreated
{
get
{
return this.dateCreated.HasValue
? this.dateCreated.Value
: DateTime.Now;
}
set { this.dateCreated = value; }
}
private DateTime? dateCreated = null;发布于 2017-05-19 20:39:18
将以下内容添加到DateTime属性
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]发布于 2018-09-22 17:54:39
我已经在EF core 2.1上进行了测试
在这里,您既不能使用约定也不能使用数据注释。您必须使用Fluent API。
class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Created)
.HasDefaultValueSql("getdate()");
}
}https://stackoverflow.com/questions/691035
复制相似问题