我被困住了。我花了将近一天的时间来解决,但无济于事。
问题:使用实体框架连接到生产数据库。
我在开发上连接良好。
<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="Data Source=.\SQLEXPRESS;Initial Catalog=MONDO;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
转向生产,我使用(来自生产 web.config 文件)现有的“DefaultConnectionString”参数(ID 和密码)来编辑 MONDOEntities 连接字符串。(我可以这样做吗?)此外,我扩展了 MONDOEntities 中的元数据以包括 .csdl、.ssdl、.msl 并在其前面加上(再次猜测,我可以这样做吗?)MONDO。粗体部分是从 dev web.config 到生产 web.config 的更改。*注意,下面的连接字符串不是由 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="Data Source=MPOC\SQLEXPRESS;persist security info=True;Database=Mondo;User ID=xxx;Password=xxxxx;MultipleActiveResultSets=Tru e;App=EntityFramework"" 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"
我用谷歌搜索了这条错误消息,并根据一些发现,我扩展了我的“元数据”,如下所示。这对我来说更像是在黑暗中拍摄:
原始(创建实体数据模型时在 web.config 中自动生成):
connectionString="metadata=res://*
新(我编辑/添加了这个):
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://*”,我真的不知道如何纠正这个问题。实际上,我什至不确定这是问题的根源。
底线,我的实体模型在开发中运行顺利,但在生产中没有连接。任何想法表示赞赏......谢谢。