【发布时间】:2011-03-31 13:16:14
【问题描述】:
我首先创建了一些这样的模型:
public abstract class EditableBase
{
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
public int CreatedBy { get; set; }
public int ModifiedBy { get; set; }
}
public class Project : EditableBase
{
public int ProjectId { get; set; }
public string ProjectName { get; set; }
}
我在应用启动时使用这一行:
Database.SetInitializer<ModelContext>(
new DropCreateDatabaseIfModelChanges<ModelContext>());
创建了一个名为 Projects 的表,其中包含上述所有属性作为列...这正是我想要的。
但是,现在我需要在 DbContext 上发出 SaveChanges() 时填充一些默认值。保存时,我需要使用适当的值更新 ModifiedOn 和 ModifiedBy 属性。
通常我至少会在数据库端(触发器或存储过程)执行 DateTime 值,但这显然不是一个选项,因为数据库将在类更改时被删除。而且由于我首先编写代码,因此我没有可以调整属性的模型设计器。
我想做的是在 EditableBase 类中添加一个方法,该方法在执行 SaveChanges() 时被调用,从而将所有涉及的逻辑保存在一个地方。是否有可能做到这一点?实现我的目标的最佳方式是什么?
【问题讨论】:
-
不错的命名约定!我想不出从日期字段的名称中获取数据类型(日期)的方法。
标签: c# entity-framework entity-framework-4.1