持久化对自动生成的DbContext的更改

本文关键字:DbContext 持久化 自动生成 | 更新日期: 2023-09-27 18:13:31

我目前正试图找到一种优雅的方式来允许对DbContext的构造函数中的连接字符串集进行更改。下面是当前的自动生成代码,我添加了this.Database.Connection.ConnectionString = @"ConnectionStringToPersist"; ,以便能够编辑connectionString。

public partial class Entities : DbContext
{
    public DbEntities()
        : base("name=DbEntities")
    {
        this.Database.Connection.ConnectionString = @"ConnectionStringToPersist";
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    public virtual DbSet<Log> Log { get; set; }
    public virtual DbSet<Processed> Processed { get; set; }
}

最初的目标是将我的connectionString移出我的app.config,所以我决定尝试以这种方式设置它(并且它有效)-但是如果我要添加/删除/修改表,我对连接字符串所做的更改将在再生时被覆盖。

有一个更好的方法来使用连接字符串在我的代码?将connectionStrings移出app.config的最初原因是为了消除配置文件中存在凭据的可能性。

欢迎提出任何建议。

持久化对自动生成的DbContext的更改

除了使用aspnet_regiis和加密您的app.config的connectionStrings部分(在尝试这样做之前-您的app.config必须重命名为web.config)。

创建一个新的类并声明一个Entities的部分类

public partial class Entities
{
    public DbEntities()
        : base(@"ConnectionStringToPersist")
    {
    }
}

然后删除/注释掉自动生成类中构造函数的原始定义,它应该像预期的那样工作。这是我到目前为止所想到的,但我会继续寻找不同的方法来解决这个问题。

这仍然不能解决实体再生的问题,所以还在研究。