2011-04-16 48 views
6

我刚刚开始玩ASP.NET MVC。ASP.NET实体框架和连接字符串

<add name="ApplicationServices" connectionString="Data Source=localhost;Port=3306;Database=test;User id=root;Password=admin;" providerName="MySql.Data.MySqlClient" /> 
<add name="testEntities" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

当您添加ADO实体数据模型时,VS会自动在web.config上创建连接字符串和数据库详细信息。问题是我使用默认存在的使用“ApplicationServices”连接字符串的ASP.NET用户/权限模式。所有这些表以及我的应用程序表都存在于同一个数据库中。我希望数据库详细信息(主机/用户/传递)来自单个连接字符串条目。或者即使有多个连接字符串条目,也可以单独从单个源获取数据库详细信息。

我来自PHP世界,无法弄清楚如何从我碰到的其他类似线程完成它。

谢谢

+0

的可能重复[实体框架 - 冗余连接字符串。(http://stackoverflow.com/questions/3777722/entity-framework-redundant-connection-string) – Jacob 2011-04-16 20:03:23

回答

1

您是否尝试过将“testEntities”重命名为“ApplicationServices”?所以,你将与一个连接字符串结束:

<add name="ApplicationServices" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

你显然需要调整EF设置更新的连接字符串的名称为好。

顺便说一句: Entity Framework - redundant connection string

+0

有这样的事情不会使会员作为工作这应该。 我已经想通了,你不能使用另一个。 providerName =“MySql.Data.MySqlClient”有什么区别? – Prasanth 2011-04-16 13:02:25

1

使用简单的方法。在配置中仅定义ApplicationServices并在应用程序中构建EF连接字符串。 ObjectContext直接提供带有EntityConnection或连接字符串的构造函数。将ApplicationService的连接字符串传递给EF连接字符串中的提供程序连接字符串部分。

EF提供了在配置部分定义连接字符串,但在90%的情况下,唯一会改变的部分是提供程序连接字符串。有关csdl,ssdl和msl文件的信息通常不会更改。更改这些资源的唯一原因可能是支持多个数据库提供程序,在这种情况下,提供程序连接字符串部分也会发生更改。在我看来,许多应用程序可以在相关的上下文中直接硬编码这些资源路径。