Asp.net mvc 3 实体框架4.1自动日期

Asp.net mvc 3 实体框架4.1自动日期,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,我对Entity Framework(以及asp.net mvc 3)非常陌生,这是我第一次真正体验EF4.1代码优先 我的问题很简单:当我通过模型为数据库生成一个新表时,我想创建一个新表 创建新行时自动将当前日期时间添加到字段 每次更新字段时自动更新该字段 实际上,该变量看起来像: [DisplayName("Data Modifica")] [DataType(DataType.DateTime)] [DisplayFormat(DataFormatString = "{0:d}")]

我对Entity Framework(以及asp.net mvc 3)非常陌生,这是我第一次真正体验EF4.1代码优先

我的问题很简单:当我通过模型为数据库生成一个新表时,我想创建一个新表

  • 创建新行时自动将当前日期时间添加到字段
  • 每次更新字段时自动更新该字段
  • 实际上,该变量看起来像:

     [DisplayName("Data Modifica")]
     [DataType(DataType.DateTime)]
     [DisplayFormat(DataFormatString = "{0:d}")]
     public DateTime DataModifica { get; set; }
    
    我想我可以写一些关于datacontext的“OnModelCreating”事件的东西,但我太新了,还不能掌握这个:)

    有人能帮忙吗

    提前感谢,,
    V.

    这与模型的创建无关。“模型”是类和数据库之间映射的描述
    OnModelCreating
    用于修改映射定义,而不是修改数据。它与实体实例本身中的数据无关

    如果需要自动修改,可以覆盖
    SaveChanges

    public override int SaveChanges()
    {
         DateTime now = DateTime.Now;
         foreach (var entity in ChangeTracker.Entries<YourEntityType>()
                                             .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified)
                                             .Select(e => e.Entity))
         {
              entity.DateModifica = now; // set the date
         }
    
         return base.SaveChanges();
    }
    
    public override int SaveChanges()
    {
    DateTime now=DateTime.now;
    foreach(ChangeTracker.Entries()中的var实体)
    .Where(e=>e.State==EntityState.Added | | e.State==EntityState.Modified)
    .选择(e=>e.Entity))
    {
    entity.DateModifica=now;//设置日期
    }
    返回base.SaveChanges();
    }
    
    为什么不将属性定义为带有备份字段的属性,该字段已初始化为默认值

    private DateTime _dateOfRequest = DateTime.Today;
       [Display(Name = "Date of Request"), DataType(DataType.Date)]
       public System.DateTime DateOfRequest {
            get { return _dateOfRequest; }
            set { _dateOfRequest = value; }
       }
    

    非常感谢。这正是我所需要的。我认为这种方法的缺点是,存储在字段中的日期时间将指示实例的创建时间,而不是实例被持久化到数据库的时间。虽然差别很小,但可能很重要,具体取决于您的应用程序。