使用单独的连接字符串设置创建多个实体数据模型

时间:2014-02-12 10:59:19

标签: entity-framework ef-model-first

我有一个包含3个项目的解决方案。 一个控制台项目和两个类库项目。

每个班级项目都有一个EDM项目,其中添加了一个实体。

所以我使用Model First方法。

每个类项目都有自己的app.config:

<connectionStrings>
<add name="FilingDBContainer" connectionString="Data Source=TESTPC\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;Pooling=False" />
</connectionStrings>

<connectionStrings>
<add name="ResponderDBContainer" connectionString="Data Source=TESTPC\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;Pooling=False" />
</connectionStrings>

在我可以运行的控制台项目中,我有以下代码:

var fileContext = new FilingDBContainer();
var files = fileContext.FileSet;
for (int i = 0; i < 10; i++)
{
    files.Add(new File { Id = i + 1, Filename = "Test" + i });
}

var responderContext = new ResponderDBContainer();
var responders = responderContext.ResponderSet;
for (int i = 0; i < 10; i++)
{
    responders.Add(new Responder { Id = i + 1, Respondername = "Test" + i });
}

添加第一个文件后,我得到一个例外:

No connection string named 'FilingDBContainer' could be found in the application config file.

对我来说似乎应该将connectionString放在控制台项目中,但我不想在那里放置con字符串。每个类项目都应该有自己的con字符串!

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您的控制台应用应该有一个包含此条目的配置文件:

<connectionStrings>
<add name="FilingDBContainer" connectionString="Data Source=TESTPC\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;Pooling=False" />
<add name="ResponderDBContainer" connectionString="Data Source=TESTPC\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;Pooling=False" />
</connectionStrings>

从加载应用程序的配置加载连接字符串。如果要自动加载程序集的配置文件,则必须编写代码以手动查询它。

答案 1 :(得分:0)

最终可执行文件将拥有自己的配置文件。未使用类库配置。为控制台应用程序添加一个.config,以控制它所使用的库的环境。