Я создаю веб-приложение ASP.Net MVC 3 с Entity Framework 4.1. Я использую подход Database First.
Я также использовал ADO.NET DbContext Generator для создания классов POCO, в отличие от использования автоматически сгенерированных объектов Entity Objects. Когда вы используете ADO.NET DbContext Generator, он создает два новых элемента: файл .tt, который создает классы POCO для каждой сущности, а также < strong>.Context.tt, который создает производный класс DbContext (используемый для запроса и сохранения данных).
В моем приложении я написал код для выполнения аудита для определенных сущностей, этот код выполняется внутри созданного мной метода override SaveChanges(). Я поместил этот метод override SaveChanges() в класс Context.cs следующим образом, и он отлично работает.
public partial class LocumEntities : DbContext
{
public LocumEntities()
: base("name=LocumEntities")
{
}
public override int SaveChanges()
{
//Audit Code Executes in Here
return base.SaveChanges();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Audit> Audits { get; set; }
public DbSet<Form> Forms { get; set; }
//Other DbSets
}
Однако каждый раз, когда я даже перемещаю или обновляю объект в моей диаграмме EDMX, а затем сохраняю, мой пользовательский метод SaveChanges() внутри класса Context.cs удаляется. Можно ли как-то предотвратить это или, может быть, мне следует поместить свой метод SaveChanges() в другое место?
Может кто-нибудь посоветовать?
Спасибо.