2013-07-19 8 views
2

Файл Model.Context.cs автоматически создается при использовании базы данных Entity Framework First.Как сохранить содержимое заголовка файла Model.Context.cs после обновления модели с db с помощью Entity Framework?

Я изменил часть заголовка класса, чтобы быть совместимым с отделом труда и Repository схеме:

public partial class MyDatabaseContext : DbContext, IDbContext 
{ 
    public MyDatabaseContext() 
     : base("name=MyDatabaseContextEntities") 
    { 
     // disable lazy loading for best practices - keeps from accidentaly loading large entity graphs 
     Configuration.LazyLoadingEnabled = false; 
    } 

    // refactored 
    public new IDbSet<T> Set<T>() where T : class 
    { 
     return base.Set<T>(); 
    } 

    public override int SaveChanges() 
    { 
     // this.ApplyStateChanges(); 
     return base.SaveChanges(); 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 
    . 
    . 
    . 

Проблема в том, что всякий раз, когда я обновить модель из БД, очевидно, этот файл получает перезаписаны.

Я сохранил соответствующий код в закомментированной части * .config и просто скопировал/вставил его обратно на место при обновлении модели.

Даже если модель не обновляется, что часто, я хотел бы знать, есть ли способ сохранить этот контент, поэтому мне не нужно проходить дополнительный шаг копирования/вставки.

ответ

2

Для добавленных членов вы можете создать другой файл, содержащий еще одну часть класса. Этот новый файл не будет перезаписан, так что все, что вы добавили, должно сохраняться между обновлениями.

Для изменений, которые не являются новыми членами (например, добавленная строка в конструкторе), вы можете напрямую отредактировать файл Model.Context.tt. Это простой T4 Text Template, используемый для повторного генерации кода при обновлении модели. Он похож на страницу ASP.NET; однако вместо использования C# для генерации HTML он использует C# для генерации большего количества C#.