实体框架中的connectionString

时间:2012-07-17 18:19:56

标签: entity-framework connection-string

我被困住了。我花了将近一天的时间来解决但无济于事。

问题:使用实体框架连接到生产数据库。

我在开发方面做得很好。

<add name="DefaultConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MONDO;Integrated Security=True" providerName="System.Data.SqlClient" />

<add name="MONDOEntities" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;Initial Catalog=MONDO;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

转向生产,我使用(来自生产web.config文件)现有的“DefaultConnectionString”参数(ID和密码)来编辑MONDOEntities connectionString。 (我可以这样做吗?)另外,我扩展了MONDOEntities中的元数据以包括.csdl,.ssdl,.msl和我前缀(再次猜测,我可以这样做吗?)MONDO。粗体部分是从dev web.config到生产web.config的更改。 *注意,下面的connectionStrings不是由Visual Studio创建的,我只是自己更改了一些信息,试着让它在生产方面工作。

<add connectionString="Data Source=MPOC\SQLEXPRESS;Database=Mondo;User ID=xxx;Password=xxxxx;" name="DefaultConnectionString" />

<add name="MONDOEntities" connectionString="metadata=res://*/MONDO.csdl|res://*/MONDO.ssdl|res://*/MONDO.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MPOC\SQLEXPRESS;persist security info=True;Database=Mondo;User ID=xxx;Password=xxxxx;MultipleActiveResultSets=Tru e;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我得到的错误信息是: 无法加载指定的元数据资源。

Line 62: /// Initializes a new MONDOEntities object using the connection string found      in the 'MONDOEntities' section of the application configuration file.
Line 63: /// </summary>
Line 64: public MONDOEntities() : 

问题:我可以手动修改connectionStrings还是需要运行编译过程?这是一个网站项目,因此它在我上传到生产后第一次即时编译。它不会在我的本地开发计算机上进行预编译。我想,最重要的是,如何为生产中的数据库的实体连接设置正确的connectionString?


我正在进行一个需要学习现有网站的项目。我正在进行第一次错误修复并学习了ado.net,我创建了一个实体数据模型并进行了一些代码更改。一切顺利开发。

我将文件移至生产中,然后我收到此错误:

"The specified default EntityContainer name 'MONDOEntities' could not be found in the mapping and metadata information.
Parameter name: defaultContainerName"

我用Google搜索了这条错误消息,根据一些调查结果,我扩展了下面显示的“元数据”。对我来说,这更像是一个黑暗的镜头:

ORIGINAL(我在创建实体数据模型时在web.config中自动生成):

connectionString="metadata=res://*

NEW(我编辑/添加了这个):

connectionString="metadata=res://*/MONDO.csdl|res://*/MONDO.ssdl|res://*/MONDO.msl;

这似乎超过了第一个错误,我收到了一条新的错误消息(如OP中所述):

Unable to load the specified metadata resource.

Line 62: /// Initializes a new MONDOEntities object using the connection string found     in the 'MONDOEntities' section of the application configuration file.
Line 63: /// </summary>
Line 64: public MONDOEntities() :

我认为我的元数据信息存在问题。但是,鉴于原始的自动生成的connectString只包含“metadata = res:// *”,我真的不知道如何纠正这个问题。实际上,我甚至不确定这是问题的根源。

最重要的是,我的实体模型在dev中运行顺畅但在生产中没有连接。感谢任何想法...谢谢。

1 个答案:

答案 0 :(得分:0)

连接字符串与编译无关,只要您没有定义要对其执行的某些转换,或者您有一些对其进行操作的自定义挂钩。 所以是的,你可以手工修改它。

您可能错误地使用了这些元数据,尝试使用它们(EG删除前缀)。

您是否完全确定在生产环境中,MONDOEntities正在加载和使用正确的connectionString?