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

时间:2012-04-21 11:02:31

标签: asp.net-mvc-3 connection-string publish

我正在尝试发布我的mvc 3项目,但我无法连接到sql server(使用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项目在本地服务器上运行良好,但在发布时我得到“不支持关键字:'元数据'”。我的错误在哪里?谢谢答案。

7 个答案:

答案 0 :(得分:4)

尝试这个...

<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" />

答案 1 :(得分:2)

我在从Linq To Sql转换为Entity框架时遇到此错误,即使在修复了我的连接字符串之后也是如此。原来有些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>

答案 2 :(得分:1)

在您的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>

答案 3 :(得分:0)

从连接字符串中删除元数据。那仅适用于本地调试。对于在线申请,可以不要求。

请尝试使用naim

给出的连接字符串

答案 4 :(得分:0)

有一个类似的问题,似乎来自somee服务器的连接字符串必须介于两个&quot;之间 我改变了所有这一切......

答案 5 :(得分:0)

我不确定为什么人们认为你的web.config中需要两个连接,但事实并非如此。我想检查的第一件事是看看我的连接是否在Visual Studio中工作。尝试访问您的服务器资源管理器并在那里连接到您的数据库。如果您能够连接没有问题,并且您能够看到您的表,那么您知道它不是连接问题。第二件事是确保您的Model名称与web.config中的名称匹配。这样可以最大限度地减少项目中的混淆程度,并最终确保您的模型名称空间指向您的项目名称空间,这样您就可以通过名称调用模型,而不必导入或完全限定它。

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

查看此troubleshooting指南,它可能会发光,并帮助您了解实体连接的工作原理。

答案 6 :(得分:0)

我有相同的例外情况,但能够通过保持ConnectionString相同但使用EntityConnection代替SqlConnection来修复它。