不支持关键字:“服务器”

问题描述 投票:0回答:9

我一直在尝试编辑连接字符串以将我的网站上传到服务器。
我对此并没有真正的经验。我收到此异常:不支持关键字:“服务器”。
这是我的连接字符串:

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

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

asp.net sql-server-2008 entity-framework ado.net connection-string
9个回答
41
投票

对于实体框架(数据库优先或模型优先;当您有物理 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=....

17
投票

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

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

providerName

解决了这个问题

来自

 providerName="System.Data.EntityClient"

providerName="System.Data.SqlClient"

6
投票

当您将连接字符串存储在应用服务本身中(在“应用程序设置”边栏选项卡上)时,Azure 网站上会引发此异常。

如果连接字符串是实体框架连接字符串,则引号将在 web.config 文件中默认编码为

&quot;

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


3
投票

在使用 Rider IDE 进行 .net core 2.2 项目时,我也遇到了同样的情况。 由于 Rider 自动在 Startup.cs 的“ConfigureServices”方法中设置 Sqlite。

通过改变

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

进入

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

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


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;

1
投票

试试这个

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

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


0
投票

就我而言,我发现我的项目安装了 EFSQLLite nuget 包,它似乎无法识别

Server=
关键字。 我卸载了那个 nuget 并安装了完整的 EFSQLSERVER,它工作得很好


0
投票

如果您将数据库从 Sqlite 更改为 SqlServer。您可能会遇到此错误。

更改您的连接

builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlite(connectionString));

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString));

© www.soinside.com 2019 - 2024. All rights reserved.