如何在使用实体框架从数据库更新模型后保留Model.Context.cs文件头内容

本文关键字:Context Model 保留 cs 文件 模型 更新 实体 数据库 框架 | 更新日期: 2023-09-27 18:24:07

Model.Context.cs文件是在使用Entity Framework Database First时自动生成的。

我已经修改了类的头部分,使其与工作单元和存储库模式兼容:

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的注释部分中,只要模型更新,就可以简单地将其复制/粘贴回原位。

尽管模型没有那么频繁地更新,但我想知道是否有办法保存这些内容,这样我就不必经历额外的复制/粘贴步骤。

如何在使用实体框架从数据库更新模型后保留Model.Context.cs文件头内容

对于添加的成员,您可以创建另一个包含类的另一部分的文件。这个新文件不会被覆盖,所以你在那里添加的任何内容都应该在更新之间保持不变。

对于不是新成员的更改(如构造函数中添加的行),可以直接编辑Model.Context.tt文件。这是一个简单的T4文本模板,用于在模型更新时重新生成代码。它类似于ASP.NET页面;然而,它没有使用C#生成HTML,而是使用C#生成更多的C#。