实体框架4.1(“代码优先”)审核列

| 我正在ASP.NET MVC网站上使用带有代码优先方法的Entity Framework 4.1 假设我有一个名为Profile的实体,它可以跟踪用户的收藏夹,并且我想跟踪用户何时更新他们的收藏夹。 更新: 以下面的类为例,每当FavoriteBook属性的值更改时,我都希望将FavoriteBookLastUpdated属性设置为当前日期。
public class Profile
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FavoriteBook { get; set; }
    public DateTime? FavoriteBookLastUpdated { get; set; }
}
现在,我只是在调用DBContext的SaveChanges()方法之前,在控制器的Edit操作中更新该字段(如果适用)。 有什么方法可以将这种逻辑以某种方式放入模型中吗?我不希望在数据库端使用触发器。     
已邀请:
        编辑:我读了您的评论和新的示例:) 您能否将“收藏夹”书本属性设置为还设置LastModified的实际属性?我不确定EF4是否会接受,但是您可以设置一个公共属性来更改FavoriteBook,并为EF4设置一个特殊属性。您可能需要设置特殊属性\'InternalsVisibleTo \' http://msdn.microsoft.com/zh-CN/library/0tke9fxk(v=vs.80).aspx     
        如果您不喜欢@PerHornshøj-Schierbeck的答案(我认为是正确的答案),则可以尝试使用EF:
public override int SaveChanges() 
{
    foreach (var entry in ChangeTracker.Entries<Profile>())
    {
        if (entry.OriginalValues == null || // I\'m not sure what value this have if entity is not loaded
            entry.Entity.FavoritBook != entry.OriginalValues[\"FavoriteBook\"].ToString())
        {
            entry.Entity.FavoriteBookLastUpdated = DateTime.Now;
        }
    }

    return base.SaveChanges();
}
    

要回复问题请先登录注册