Ключевое слово не поддерживается: 'server'
Я пытаюсь изменить строку подключения для загрузки моего веб-сайта на сервер.
Я не очень разбираюсь в этом. Я получил это исключение: ключевое слово не поддерживается: "server".
Вот моя строка подключения:
<add name="AlBayanEntities" connectionString="Server=xx.xx.xxx.xxx,xxxx;Database=AlBayan;Uid=bayan;Password=xxxxx;" providerName="System.Data.EntityClient" />
Я попытался вставить эту строку в свою старую строку подключения, которая работает очень хорошо локально, но она не подходит: S
Ответы
Ответ 1
Для 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=....
)
Ответ 2
В MVC5 с использованием EntityFramework 6.xx и Code First Approach
У меня была та же проблема, и я решил ее, изменив свой providerName
от
providerName="System.Data.EntityClient"
в
providerName="System.Data.SqlClient"
Ответ 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;
Ответ 4
Попробуйте это
<add name="AlBayanEntities" connectionString="Data Source=xx.xx.xxx.xxx,xxxx;Initial Catalog=AlBayan;User Id=bayan;Password=1abcd;" providerName="System.Data.EntityClient" />
Ответ 5
Это исключение вызывается на лазурных сайтах, когда вы храните строку соединения в самой службе приложений (на клике "Параметры приложения" ).
Если строка подключения является строкой соединения Entity Framework, кавычки будут закодированы как "
по умолчанию в вашем файле web.config.
Вам нужно изменить их обратно на фактические кавычки, чтобы строка соединения могла быть правильно проанализирована.
Ответ 6
То же самое случилось со мной при использовании Rider IDE для проекта .net core 2.2.
Поскольку Rider автоматически настраивает Sqlite в Startup.cs методом "ConfigureServices".
Изменяя
services.AddDbContext<ApplicationDbContext>(options =>
options.**UseSqlite**(
Configuration.GetConnectionString("DefaultConnection")));
в
services.AddDbContext<ApplicationDbContext>(options =>
options.**UseSqlServer**(
Configuration.GetConnectionString("DefaultConnection")));
проблема была решена.
Конечно, сначала вы должны установить пакеты nuget для EF SQLServer и добавить строку подключения в appsettings.json.
Ответ 7
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
как хотите.
Ответ 8
В моем случае я обнаружил, что в моем проекте установлен пакет nuget EFSQLLite, который, похоже, не распознает ключевое слово Server=
.
Я удалил этот nuget и установил полный EFSQLSERVER, и он работал нормально