1
我正在评估实体框架4.0,我在想如何才能在实体保存之前访问实体以设置DateCreated。使用实体框架在保存时在poco对象上设置DateCreated
与NHibernate这可以完成使用监听器,如果有帮助?
我正在评估实体框架4.0,我在想如何才能在实体保存之前访问实体以设置DateCreated。使用实体框架在保存时在poco对象上设置DateCreated
与NHibernate这可以完成使用监听器,如果有帮助?
您可以使用ObjectContext
事件SavingChanges
,检索具有状态EntityState.Added
的实体,并为这些对象设置DateCreated。您可能需要一个帮助程序接口来促进更多不可知的处理程序,并避免使用反射。您可能也可以使用动态,虽然您将运行抛出运行时异常的机会,这会损害性能:
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;
}
}
}
}