我一直在尝试编辑我的连接字符串,以便将我的网站上传到服务器 我对此并不十分熟悉。我遇到了这个例外:不支持关键字:'server' 这是我的连接字符串:
<add name="AlBayanEntities" connectionString="Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;" providerName="System.Data.EntityClient" />
我已经尝试将此字符串嵌入到我的旧连接字符串中,该字符串在本地运行良好,但它不适合:S
答案 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="data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
在此连接字符串中,您将找到provider connection string=
属性,该属性基本上是您的ADO.NET连接字符串:
provider connection string="data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
所以在这里,您需要更改服务器名称和可能的其他设置。
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文件中编码为"
。
您需要将这些更改回实际引号,以便可以正确解析连接字符串。
答案 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,并且运行良好