【发布时间】:2015-09-16 14:11:09
【问题描述】:
所以,基本上我在我的项目中使用EF 和Reverse POCO Code First Generator。
我的连接字符串如下所示:
<connectionStrings>
<add name="HistoryDBContext" connectionString="" providerName="System.Data.SqlClient" />
<add name="ProjectMgtContext" connectionString="data source=xxx;initial catalog=xxx;user id=xx;password=xxx;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我的想法是,我将从ProjectMgtContext 读取HistoryDBContext 的connectionString(工作正常),然后使用以下方法从connectionString 重写connectionString:
public static void WriteConnectionString(string connectionString)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection) config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["HistoryDBContext"].ConnectionString = connectionString;
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
}
但是,这只适用于我运行项目的second time,因为在第一次运行期间,它抱怨connectionString 为空:
所以,显然我的方法行不通。我应该如何处理?
谢谢
编辑
更多代码:
while (ProjectManager.HaveProjects())
{
var project = ProjectManager.GetNextProject();
if (project == null) continue;
/*Write the current project to the configuration file*/
Connection.WriteConnectionString(project.ConnectionString);
...
}
【问题讨论】:
-
在做任何与实体框架相关的事情之前,你会调用你的 WriteConnectionString 吗?也许 EF 只是在您刷新之前读取它?
-
是的。我也那么认为。我以前什么都做。我不知道该怎么办:/
-
您的 WriteConnectionString 方法很好,所以问题出在代码的另一部分。尝试在程序的 Main 方法的第一行执行此操作。
-
我发布了一些代码。如您所见,我循环遍历
ProjectMgtContext中的所有行,然后编写connectionString以继续该过程。
标签: c# entity-framework ef-code-first connection-string