Если у меня есть следующая сущность:
public class PocoWithDates
{
public string PocoName { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime LastModified { get; set; }
}
Что соответствует таблице SQL Server 2008 с тем же именем / атрибутами ...
Как я могу автоматически :
- Установите для поля CreatedOn / LastModified для записи значение сейчас (при выполнении INSERT)
- Установите для поля LastModified для записи значение сейчас (при выполнении ОБНОВЛЕНИЯ)
Когда я говорю автоматически , я имею в виду, что хочу иметь возможность сделать это:
poco.Name = "Changing the name";
repository.Save();
Не это:
poco.Name = "Changing the name";
poco.LastModified = DateTime.Now;
repository.Save();
За кулисами «что-то» должно автоматически обновлять поля даты и времени.Что это за «что-то»?
Я использую Entity Framework 4.0 - есть ли способ, которым EF может сделать это автоматически для меня?(может быть, специальная настройка в EDMX?)
Со стороны SQL Server я могу использовать DefaultValue , но это будет работать только для INSERT (не UPDATE).
Точно так же я могу установить значение по умолчанию, используя конструктор для POCO, но опять же это будет работать только при создании экземпляра объекта.
И, конечно, я может использовать триггеры, но это не идеально.
Поскольку я использую Entity Framework, я могу подключиться к событию SavingChanges и обновить поля даты здесь, но проблема в том, что мне нужно стать«осведомлен» о POCO (на данный момент мой репозиторий реализован с использованием дженериков).Мне нужно было бы сделать какую-то хитрость OO (например, заставить мой POCO реализовать интерфейс и вызвать метод для этого).Я не отрицаю это, но если мне придется сделать это, я бы предпочел установить поля вручную.
Я в основном ищу решение для SQL Server 2008 или Entity Framework 4.0.(или умный способ .NET)
Есть идеи?
РЕДАКТИРОВАТЬ
Спасибо @marc_s за его ответ, но я пошел с решениемчто лучше для моего сценария.