gpt4 book ai didi

c# - 使用 Entity Framework 从数据库更新模型后如何保留 Model.Context.cs 文件头内容?

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:57 25 4
gpt4 key购买 nike

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.tt 文件。这是一个简单的 T4 Text Template用于在更新模型时重新生成代码。它类似于 ASP.NET 页面;但是,它不是使用 C# 生成 HTML,而是使用 C# 生成更多 C#。

关于c# - 使用 Entity Framework 从数据库更新模型后如何保留 Model.Context.cs 文件头内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com