2011-06-09 67 views
0

我有一个这样的实体。比方说,这个名字是唯一的:如何在保存之前填充EF实体中的属性?

public class MyEntity 
{ 
    public Guid Id { get; set; } // immutable 
    public string Name { get; set; } // can be changed 

    // These are not exposed on the domain layer. They're just bookkeeping fields. 
    public string CreatedBy { get; set; } 
    public DateTime DateCreated { get; set; } 
    public string UpdatedBy { get; set; } 
    public DateTime DateUpdated { get; set; } 
} 

如果我调用的SaveChanges之前填充2“更新”字段(),我的单位将被标记为错误地改变,如果名称没有改变。因此,我需要在DbContext上挂接一个事件,以便在提交工作单元之前填充这两个字段,但仅限于实际已更改的实体。

这样的事件是否存在? nHibernate可以做到这一点吗?

+0

可能重复[如何使用Code First EF4.1保存默认值到属性?](http://stackoverflow.com/questions/5500464/how-can-i-add-default-values -to-A-财产时节省-使用代码先ef4-1) – 2011-06-13 19:32:35

回答

3

在ObjectContext API中,事件SavingChanges直接在ObjectContext上。您可以处理此事件并使用ObjectStateManager查找所有修改/添加的实体,并根据需要处理它们。

ObjectContext APIDbContext API中,您可以直接覆盖SaveChanges方法并执行相同操作。

流利的NHibernate只是NHibernate的扩展,用于流畅的代码映射。 NHibernate对这种情况有更好的支持 - 它提供了custom listeners来解决这个问题。

相关问题