相同的连接字符串用于不同的EntityFramework模型?

时间:2012-03-15 11:48:37

标签: database asp.net-mvc-3 entity-framework

我开始使用EF的MVC3应用程序。我们有一个带>的数据库200张桌子。我正在使用DBFirst方法。

我的想法是为应用中的不同区域创建EFModel,而不是将整个数据库模式放到一个大模型中。我现在遇到了一个问题,每个模型似乎都想要一个自己的连接字符串。我还没有成功设法改为只有一个常见的连接字符串。应该不可能吗?我认为它在背景中是相同的数据库所以......

还是我完全离开这里?我应该将所有表格拖入一个大型模型吗?或者接受我将获得大量连接字符串的事实?

任何见解?

3 个答案:

答案 0 :(得分:1)

多个EDMX型号不能有一个EF连接字符串,因为EDMX metadata is part of the EF connection string

这对您来说应该不是问题,除了所有这些连接字符串都包含嵌入式数据库连接字符串,您可能希望在一个地方而不是5处更改它。您可以但是,使用EntityConnectionStringBuilder在运行时更新数据库连接字符串部分。因此,您可以为数据库连接提供“常规”(非EF)连接字符串,然后在创建上下文时使用EntityConnectionStringBuilder将其替换为EF连接字符串。

在我的头顶,代码看起来像:

var dbCS = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
var model1CS = ConfigurationManager.ConnectionStrings["Model1ConnectionString"].ConnectionString;
var ecsb = new EntityConnectionStringBuilder(model1CS);
ecsb.ProviderConnectionString = dbCS;

return new Model1Entities(ecsb.ToString());

答案 1 :(得分:0)

也许您应该创建基本上下文,您可以在web.config中对连接字符串或其名称进行硬编码。上下文父母可能只是al db的一部分,甚至在父上下文中描述了一些常见实体,你应该在每个孩子中使用它们。

答案 2 :(得分:0)

为什么需要使用实体框架? 也许EF不适合你。

我建议您使用其他ORM,例如Simple.Data