持久更改自动生成的DbContext

时间:2016-10-18 19:01:50

标签: c# entity-framework connection-string

我目前正试图找到一种优雅的方式来允许对我的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之外,所以我决定尝试以这种方式设置它(并且它可以工作) - 但是如果我要添加/删除/修改表,则更改I在重新生成时会覆盖连接字符串。

在我的代码中使用connectionStrings有更好的方法吗?将connectionStrings移到app.config之外的最初原因是为了消除配置文件中的凭据的可能性。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

除了使用aspnet_regiis并加密app.config的connectionStrings部分之前(在尝试执行此操作之前 - 您的app.config必须重命名为web.config)。

创建一个新类并声明一个Entities

的部分类
public partial class Entities
{
    public DbEntities()
        : base(@"ConnectionStringToPersist")
    {

    }
}

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

这仍然无法解决实体再生的问题 - 所以仍然在研究这个问题。