ASP.NET实体框架和连接字符串

时间:2011-04-16 11:20:15

标签: asp.net entity-framework

我刚开始玩ASP.NET MVC。

 <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上创建连接字符串以及数据库详细信息。问题是我使用ASP.NET用户/权限模式,它使用默认存在的“ApplicationServices”连接字符串。所有这些表以及我的应用程序表都存在于同一个DB中。我希望数据库详细信息(主机/用户/传递)来自单个连接字符串条目。或者,即使有多个连接字符串条目,也可以从单一来源单独获取数据库详细信息。

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

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

相关问题