У меня есть приложение asp.net-mvc с базой данных членства по умолчанию. Я получаю к нему доступ через ADO.NET Entity Framework.
Теперь я хочу переместить его в IIS, но обнаружилось несколько проблем. Мне пришлось установить SQL Server Management Studio, создать новую БД, импортировать туда все данные из предыдущего файла .MDF. Единственное, что осталось сделать (насколько я знаю), - это изменить строку подключения. Однако я не очень разбираюсь в этом и продолжаю получать неподдерживаемое ключевое слово: «источник данных». исключение. Вот моя строка подключения:
<add name="ASPNETDBEntities"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.EntityClient" />
Есть идеи, что не так?
Ответы:
У вас есть допустимая строка подключения ADO.NET, но это НЕ допустимая строка подключения Entity Framework.
Строка подключения EF будет выглядеть примерно так:
<connectionStrings> <add name="NorthwindEntities" connectionString= "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl; provider=System.Data.SqlClient; provider connection string="Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False"" providerName="System.Data.EntityClient" /> </connectionStrings>
Вы упускаете все
metadata=
иproviderName=
элементы в строке соединения EF ...... вы в основном только то , что содержится вprovider connection string
части.Использование конструктора EDMX должно создать для вас допустимую строку подключения EF в файле web.config или app.config.
Марк
ОБНОВЛЕНИЕ: Хорошо, я понимаю, что вы пытаетесь сделать: вам нужна вторая строка подключения «ADO.NET» только для базы данных пользователей / участников ASP.NET. Ваша строка в порядке, но имя providerName неверно - это должно быть «System.Data.SqlClient» - это соединение не использует ENtity Framework - тогда не указывайте для него «EntityClient»!
<add name="ASPNETMembership" connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" providerName="System.Data.SqlClient" />
Если вы укажете
providerName=System.Data.EntityClient
==> строку подключения Entity Framework (с метаданными = и всем).Если вам нужно и укажите
providerName=System.Data.SqlClient
==> прямую строку подключения ADO.NET SQL Server без всех дополнений EFисточник
Эта проблема может возникнуть, когда вы ссылаетесь на строки подключения web.config (или app.config) по индексу ...
var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;
Строка подключения, отсчитываемая от нуля, не всегда является той, которая указана в вашем файле конфигурации, поскольку она по умолчанию наследует другие от более высокого уровня стека .
Рекомендуемые подходы - получить доступ к вашему подключению по имени ...
var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
или сначала очистить элемент connnectionStrings в вашем файле конфигурации ...
<connectionStrings> <clear/> <add name="MyConnection" connectionString="...
источник
У меня была такая же проблема.
но этот код работает хорошо, попробуйте.
<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
источник
У меня была эта проблема, когда я начал использовать Entity Framework, это произошло, когда я не изменил старое соединение SQL-сервера на соединение EntityFrameWork.
Решение: в файле, в котором выполняется подключение через файл web.config "add name =" Entities "connectionString = XYZ", убедитесь, что вы ссылаетесь на правильное соединение, в моем случае мне пришлось это сделать
public static string MyEntityFrameworkConnection { get { return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; } }
вызывайте MyEntityFrameworkConnection всякий раз, когда необходимо установить соединение.
private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;
Примечание: соединение в файле web.config будет сгенерировано автоматически при добавлении модели Entity в решение.
источник
Я знаю, что это старый пост, но недавно я получил ту же ошибку, поэтому, чего бы это ни стоило, вот еще одно решение:
Обычно это ошибка строки подключения, проверьте формат строки подключения, вы можете найти «строка подключения структуры сущности» или следовать приведенным выше предложениям.
Однако в моем случае моя строка подключения была в порядке, и ошибка была вызвана чем-то совершенно другим, поэтому я надеюсь, что это кому-то поможет:
Сначала у меня была ошибка EDMX : в EDMX была новая таблица базы данных, а таблица не существовала в моей базе данных (забавно, что ошибка была не очень очевидной, потому что она не отображалась в моем EDMX или окне вывода, вместо этого он был спрятан в Visual Studio в окне «Список ошибок» под «Предупреждениями»). Я решил эту ошибку, добавив недостающую таблицу в свою базу данных. Но на самом деле я был занят, пытаясь добавить хранимую процедуру, но все еще получал ошибку «источник данных», поэтому посмотрите ниже, как я ее разрешил:
Ошибка хранимой процедуры : я пытался добавить хранимую процедуру, и каждый раз, когда я добавлял ее через окно дизайна EDMX, я получал ошибку «источник данных». Решением было добавить хранимую процедуру как пустую (я сохранил имя и объявление хранимой процедуры, но удалил содержимое сохраненной процедуры и заменил его на «выберите 1» и попытался добавить его в EDMX). Это сработало! Предположительно EF что-то не понравилось в моей хранимой процедуре. Как только я добавил процедуру в EF, я смог обновить содержимое процедуры в моей базе данных до того, что я хотел, и он работает, ошибка «источника данных» устранена.
странность
источник
Я получал ту же ошибку, затем обновил строку подключения, как показано ниже,
<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
Попробуйте, это решит вашу проблему.
источник