不支持关键字:'server'

时间:2011-07-11 07:09:32

标签: asp.net sql-server-2008 entity-framework ado.net connection-string

我一直在尝试编辑我的连接字符串,以便将我的网站上传到服务器 我对此并不十分熟悉。我遇到了这个例外:不支持关键字:'server' 这是我的连接字符串:

<add name="AlBayanEntities" connectionString="Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;" providerName="System.Data.EntityClient" />

我已经尝试将此字符串嵌入到我的旧连接字符串中,该字符串在本地运行良好,但它不适合:S

8 个答案:

答案 0 :(得分:31)

对于Entity Framework(数据库优先或模型优先;当您拥有物理EDMX模型文件时),您需要使用特殊类型的连接字符串,这与其他人提到的直接ADO.NET连接字符串完全不同到目前为止......

连接字符串必须类似于:

<add name="testEntities" 
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

在此连接字符串中,您将找到provider connection string=属性,该属性基本上是您的ADO.NET连接字符串:

provider connection string=&quot;data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 

所以在这里,您需要更改服务器名称和可能的其他设置。

  • data source=....代表您的服务器(您也可以使用server=.....
  • initial catalog=.....代表您的数据库(您也可以使用database=....

答案 1 :(得分:9)

MVC5 中使用 EntityFramework 6.xx 代码优先方法

我遇到了同样的问题,我通过修改providerName

解决了这个问题

 providerName="System.Data.EntityClient"

providerName="System.Data.SqlClient"

答案 2 :(得分:3)

我总是运行连接向导来构建我的字符串,或者使用connectionstrings.com

假设SQL Server:

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

与你的相比,它是非常不同的。

Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;

答案 3 :(得分:1)

试试这个

<add name="AlBayanEntities" connectionString="Data Source=xx.xx.xxx.xxx,xxxx;Initial Catalog=AlBayan;User Id=bayan;Password=1abcd;" providerName="System.Data.EntityClient" />

答案 4 :(得分:1)

将连接字符串存储在App Service本身(在“应用程序设置”刀片上)时,会在azure网站上抛出此异常。

如果连接字符串是实体框架连接字符串,则默认情况下,引号将在您的web.config文件中编码为&quot;

您需要将这些更改回实际引号,以便可以正确解析连接字符串。

答案 5 :(得分:1)

在将Rider IDE用于.net core 2.2项目时,我发生了同样的事情。 As Rider会通过“ ConfigureServices”方法在Startup.cs中自动设置Sqlite。

通过更改

services.AddDbContext<ApplicationDbContext>(options =>
    options.**UseSqlite**(
        Configuration.GetConnectionString("DefaultConnection")));

进入

services.AddDbContext<ApplicationDbContext>(options =>
    options.**UseSqlServer**(
        Configuration.GetConnectionString("DefaultConnection")));

问题已解决。 当然,首先,您必须为EF SQLServer安装nuget软件包,并将连接字符串添加到appsettings.json。

答案 6 :(得分:0)

EntityConnectionStringBuilder bb = new EntityConnectionStringBuilder();
bb.Metadata = "res://*/dao.bdmi.csdl|res://*/dao.bdmi.ssdl|res://*/dao.bdmi.msl";

//same as below client tobe used
bb.Provider = "MySql.Data.MySqlClient";
MySql.Data.MySqlClient.MySqlConnectionStringBuilder mbb = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder();
mbb.Server = "";
mbb.Database = "";
mbb.UserID = "";
mbb.Password = "";
mbb.PersistSecurityInfo = true;


//use providerconnectionstring insted of connectionstring
bb.ProviderConnectionString = mbb.ToString();
return bb.ToString();

通过这种方式,您可以根据需要更改ConnectionString

答案 7 :(得分:0)

就我而言,我发现我的项目安装了EFSQLLite nuget软件包,该软件包似乎无法识别Server=关键字。 我卸载了该nuget并安装了完整的EFSQLSERVER,并且运行良好