我从一个使用EF的MVC3应用程序开始。我们有一个超过200个表的数据库。我使用的是DBFirst方法。
我的想法是为应用程序中的不同区域创建一个EFModel,而不是将整个数据库模式放入一个大模型中。我现在遇到了一个问题,每个模型似乎都想要一个自己的连接字符串。我没有成功地更改为只有一个公共的connestionstring。这不应该是可能的吗?我在想,背景中的数据库是一样的,所以...
还是说我完全说错了?我应该将所有的表拖放到一个大模型中吗?或者接受我将获得大量连接字符串的事实?
有什么见解吗?
发布于 2012-03-15 20:01:15
您不能将一个EF连接字符串用于多个EDMX模型,因为EDMX metadata is part of the EF connection string。
这对您来说应该不是问题,除非所有这些连接字符串都包含一个嵌入式DB连接字符串,并且您可能希望在一个位置而不是5个位置对其进行更改。但是,您可以在运行时使用EntityConnectionStringBuilder更新DB连接字符串部分。因此,您可以为DB连接使用“常规”(非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());
发布于 2012-03-15 19:52:58
也许你应该创建基本上下文,在那里你可以在web.config中硬编码连接字符串或它的名称。上下文父级可能只有al的一部分,甚至在父级上下文中描述一些常见的实体,您应该在每个子级中使用它们。
发布于 2012-03-16 03:24:23
为什么需要使用Entity Framework?也许EF对你来说不是正确的解决方案。
我建议你使用其他的对象模型,比如Simple.Data。
https://stackoverflow.com/questions/9719056
复制相似问题