我正在尝试发布我的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="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" />
我把这部分从我的主人那里拿走了:
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项目在本地服务器上运行良好,但在发布时我得到“不支持关键字:'元数据'”。我的错误在哪里?谢谢答案。
答案 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="data source****;initial catalog=int422_113b16;user id=****;password=****;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
答案 3 :(得分:0)
从连接字符串中删除元数据。那仅适用于本地调试。对于在线申请,可以不要求。
请尝试使用naim
给出的连接字符串答案 4 :(得分:0)
有一个类似的问题,似乎来自somee服务器的连接字符串必须介于两个"
之间
我改变了所有这一切......
答案 5 :(得分:0)
我不确定为什么人们认为你的web.config中需要两个连接,但事实并非如此。我想检查的第一件事是看看我的连接是否在Visual Studio中工作。尝试访问您的服务器资源管理器并在那里连接到您的数据库。如果您能够连接没有问题,并且您能够看到您的表,那么您知道它不是连接问题。第二件事是确保您的Model名称与web.config中的名称匹配。这样可以最大限度地减少项目中的混淆程度,并最终确保您的模型名称空间指向您的项目名称空间,这样您就可以通过名称调用模型,而不必导入或完全限定它。
您应该能够使用模型中的任何表创建强大的视图。这就是我为我所做的,我没有像许多建议那样修改连接字符串,也没有删除元数据。
查看此troubleshooting指南,它可能会发光,并帮助您了解实体连接的工作原理。
答案 6 :(得分:0)
我有相同的例外情况,但能够通过保持ConnectionString
相同但使用EntityConnection
代替SqlConnection
来修复它。