Я начал с создания некоторых моделей, таких как:
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 ()выполняется, таким образом, сохраняя всю логику в одном месте.Можно ли сделать это?Как лучше всего достичь своей цели?