首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用实体框架从数据库更新模型后保留Model.Context.cs文件头内容?

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

Stack Overflow用户
提问于 2013-07-19 23:23:20
回答 1查看 2.4K关注 0票数 2

Model.Context.cs文件是在首先使用实体框架数据库时自动生成的。

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

代码语言:javascript
复制
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的注释掉的部分中,并在模型更新时简单地将其复制/粘贴回原位。

即使模型不是那么频繁地更新,我也想知道是否有一种方法可以保存这些内容,这样我就不需要执行额外的复制/粘贴步骤。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 00:24:04

对于添加的成员,可以创建包含类的另一个部分的另一个文件。这个新文件不会被覆盖,因此您在其中添加的任何内容都应该在两次更新之间保留。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17749788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档