我目前正试图找到一种优雅的方式来允许对我的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之外的最初原因是为了消除配置文件中的凭据的可能性。
任何建议都表示赞赏。
答案 0 :(得分:0)
除了使用aspnet_regiis
并加密app.config的connectionStrings
部分之前(在尝试执行此操作之前 - 您的app.config必须重命名为web.config)。
创建一个新类并声明一个Entities
public partial class Entities
{
public DbEntities()
: base(@"ConnectionStringToPersist")
{
}
}
然后删除/注释掉自动生成的类中构造函数的原始定义,它应该按预期工作。这是我到目前为止所提出的,但我会继续寻找解决这个问题的不同方法。
这仍然无法解决实体再生的问题 - 所以仍然在研究这个问题。