关键字不支持:'元数据'

问题描述:

我想发布我的mvc 3项目,但我不能连接到SQL服务器(使用EF),因为连接字符串错误。那就是:关键字不支持:'元数据'

<add name="PackStoreEntities" connectionString="metadata=res://*/Models.PackStore.csdl|res://*/Models.PackStore.ssdl|res://*/Models.PackStore.msl;provider=System.Data.SqlClient;provider connection string=&quot;workstation id=PackStore.mssql.somee.com;packet size=4096;user id=*****;pwd=****;data source=PackStore.mssql.somee.com;persist security info=False;initial catalog=PackStore&quot;" providerName="System.Data.EntityClient" /> 

我把这个部分形成了我的主机供应商:

workstation id=PackStore.mssql.somee.com;packet size=4096;user id=*****;pwd=****;data source=PackStore.mssql.somee.com;persist security info=False;initial catalog=PackStore 

MVC项目运作良好的本地服务器上,而是发表我得到“不支持关键字:‘元’”的时候。我的错误在哪里? Thnaks的答案。

+0

那是帮助完整的.... – 2012-04-21 11:09:54

试试这个...

<add name="PackStoreEntities" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string='Data Source=PackStore.mssql.somee.com;Initial Catalog=PackStore;User ID=***;Password=****;'" providerName="System.Data.EntityClient" /> 

编辑..

<add name="PackStoreEntities" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string='workstation id=PackStore.mssql.somee.com;packet size=4096;user id=*****;pwd=****;data source=PackStore.mssql.somee.com;persist security info=False;initial catalog=PackStore;'" providerName="System.Data.EntityClient" /> 
+0

你说的是替换...我已经尝试过这个。它没有工作,而不是“关键字不支持”,我得到:“建立到SQL Server的连接时发生网络相关或实例特定的错误。服务器未找到或无法访问。请验证该实例(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“' – AlexSolovyov 2012-04-21 11:14:50

+0

我编辑了我的答案... – 2012-04-21 11:18:12

+0

同样的问题.. 。元数据( – AlexSolovyov 2012-04-21 11:23:08

删除他从你的连接字符串的元数据。这仅用于本地调试。对于在线应用程序可以不需要。

请尝试通过伊姆

+2

我''试过这个,asme prob。但是,如果从连接字符串中删除'metadata = res:// *;',我会得到以下错误:'连接字符串中缺少一些必需的信息。总是需要'metadata'关键字。' – AlexSolovyov 2012-04-21 11:27:39

给出的连接字符串,而从转换的LINQ到SQL实体框架为好,甚至我的固定的连接字符串后,我得到这个错误。原来一些asp:SqlDataSource控件需要切换到asp:EntityDataSource。

前:

<asp:SqlDataSource ID="SqlDataSourceProducts" runat="server" SelectCommand="SELECT Id, Description FROM [Product]" 
     ConnectionString="<%$ ConnectionStrings:crmConnectionString %>" CacheDuration="5" CacheExpirationPolicy="Absolute"> 
    </asp:SqlDataSource> 

后:

<asp:EntityDataSource ID="SqlDataSourceProducts" runat="server" Select="Id, Description" 
     EntitySetName="Products" ConnectionString="<%$ ConnectionStrings:crmConnectionString %>" DefaultContainerName="CRM" > 
    </asp:EntityDataSource> 
+0

需要注意的是,如果您不想使用EDMX并想使用SQL,则prvider名称需要像这样更改:providerName =“System.Data.EntityClient” – Sinker 2014-11-14 12:27:06

也有类似的问题,看起来像是从somee服务器的连接字符串必须是两个&quot; 之间这就是我改变,它的工作原理...

在你的web.config中,你需要有两个独立的连接:一个是实体框架工作,另一个是ADO.net

应该是这样的:

<connectionStrings> 
     <add name="LoginDB" connectionString="Data Source=****;Initial Catalog=int422_113b16;User ID=****;Password=****" /> 
     <add name="BlogEntities" connectionString="metadata=res://*/App_Code.BlogModel.csdl|res://*/App_Code.BlogModel.ssdl|res://*/App_Code.BlogModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source****;initial catalog=int422_113b16;user id=****;password=****;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

我不知道为什么人们认为你需要在你的web.config两种连接方式,这不是真的。我想检查的第一件事是查看我的连接是否在Visual Studio中工作。尝试去你的服务器浏览器并连接到你的数据库。如果你能够连接没有问题,你能够看到你的表,那么你知道它不是一个连接问题。其次,确保您的Model名称与您的web.config中的名称匹配。这最大限度地减少了项目中的混乱,最终确保您的模型名称空间指向您的项目名称空间,这样您可以通过名称调用模型,而不必导入或完全限定它。

您应该能够使用模型中的任何表格创建一个强大的视图。这就是我为我做的,我没有像许多人所建议的那样修改连接字符串,也没有删除元数据。

检查这个troubleshooting指导它可能会发光一些,并帮助您了解实体连接如何工作。

我有同样的例外,但能够通过保持ConnectionString相同,但使用EntityConnection而不是SqlConnection来修复它。