Как я могу добавить значения по умолчанию к свойству при сохранении с использованием Code First EF4.1?

Я начал с создания таких моделей:

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 создается со всеми свойствами, упомянутыми выше в виде столбцов ... это именно то, что я хотел.

Однако теперь мне нужно заполнить некоторые значения по умолчанию, когда я вызываю SaveChanges () в DbContext. Когда я сохраняю, мне нужно обновить свойства ModifiedOn и ModifiedBy с соответствующими значениями.

Обычно я бы, по крайней мере, делал значения DateTime на стороне базы данных (либо триггер, либо хранимая процедура), однако здесь явно не вариант поскольку база данных будет удалена при изменении класса. И поскольку я сначала написал код, у меня нет конструктора моделей, на котором я мог бы настроить свойства.

Я бы хотел добавить метод в класс EditableBase, который вызывается при выполнении SaveChanges (), таким образом сохраняя всю задействованную логику в одном месте. Можно ли это сделать? Как лучше всего достичь моей цели?

10
задан Ladislav Mrnka 31 March 2011 в 16:42
поделиться