我正在评估Entity Framework 4.0,我想知道如何在保存设置DateCreated之前访问实体。
使用NHibernate可以使用监听器完成,如果有帮助吗?
答案 0 :(得分:1)
您可以使用ObjectContext
事件SavingChanges
,检索具有状态EntityState.Added
的实体,并为这些对象设置DateCreated。您可能需要一个辅助接口来促进更加不可知的处理程序并避免使用反射。您也可以使用dynamic,尽管您可能会抛出运行时异常的机会,这会损害性能:
private void context_SavingChanges(object sender, EventArgs e)
{
ObjectContext context = sender as ObjectContext;
if (context != null)
{
foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries (EntityState.Added)
{
IEntityWithTimestamps entity = entry.Entity as IEntityWithTimestamps;
if (entity != null)
{
entity.DateCreated = DateTime.Now;
}
}
}
}