我正在使用Entity Framework 4.1构建一个ASP.Net MVC 3 Web应用程序,采用Database First方法。
我还使用了ADO.NET DbContext生成器来创建POCO类,而不是使用自动生成的Entity对象。当您使用ADO.NET DbContext生成器时,它将创建两个新项目:一个.tt文件,为每个实体生成POCO类;另一个.Context.tt文件,生成一个派生的DbContext类(用于查询和持久化数据)。
在我的应用程序中,我编写了特定实体的审计代码,这些代码在我创建的override SaveChanges()方法内执行。我将此override SaveChanges()方法放置在Context.cs类中,它可以很好地工作。
然而,每次我在EDMX Diagram中移动或更新实体,然后保存,我的Context.cs类中的自定义SaveChanges()方法就会被删除。有没有办法阻止这种情况发生,或者也许我应该把我的SaveChanges()方法放在其他地方?请问是否有人可以提供建议?谢谢。
我还使用了ADO.NET DbContext生成器来创建POCO类,而不是使用自动生成的Entity对象。当您使用ADO.NET DbContext生成器时,它将创建两个新项目:一个.tt文件,为每个实体生成POCO类;另一个.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 Diagram中移动或更新实体,然后保存,我的Context.cs类中的自定义SaveChanges()方法就会被删除。有没有办法阻止这种情况发生,或者也许我应该把我的SaveChanges()方法放在其他地方?请问是否有人可以提供建议?谢谢。