ключевое слово не поддерживается источник данных - PullRequest
67 голосов
/ 10 сентября 2009

У меня есть приложение 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" />

Есть идеи, что не так?

Ответы [ 6 ]

122 голосов
/ 10 сентября 2009

Имеется допустимая строка подключения ADO.NET, но НЕ допустимая строка подключения Entity Framework.

Строка подключения EF будет выглядеть примерно так:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      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

5 голосов
/ 10 июня 2011

Эта проблема может возникать, когда вы ссылаетесь на строки подключения web.config (или app.config) по индексу ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

Строка подключения, начинающаяся с нуля, не всегда совпадает со строкой в ​​вашем конфигурационном файле, поскольку она наследует другие по умолчанию от дальнейшего увеличения стека .

Рекомендуемые подходы - получить доступ к вашему соединению по имени ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

или сначала очистить элемент connnectionStrings в вашем конфигурационном файле ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...
2 голосов
/ 11 октября 2013

У меня была такая же проблема.
но этот код работает хорошо, попробуйте.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
0 голосов
/ 19 сентября 2017

Я получил ту же ошибку, затем обновил строку подключения, как показано ниже,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

Попробуйте, это решит вашу проблему.

0 голосов
/ 22 декабря 2014

Я знаю, что это старый пост, но недавно я получил ту же ошибку, так что для чего оно стоит, вот другое решение:

Обычно это ошибка строки подключения, пожалуйста, проверьте формат строки подключения, вы можете посмотреть «Строка подключения сущности платформы» или следовать приведенным выше советам.

Однако в моем случае моя строка подключения была в порядке, и ошибка была вызвана чем-то совершенно другим, поэтому я надеюсь, что это кому-то поможет:

  1. Сначала у меня произошла ошибка EDMX : в EDMX была новая таблица базы данных, и таблица не существовала в моей базе данных (забавно то, что ошибка была не очень очевидной, поскольку это не было показано в моем EDMX или окне вывода, вместо этого оно было спрятано в visual studio в окне «Список ошибок» под «Предупреждениями»). Я решил эту ошибку, добавив отсутствующую таблицу в свою базу данных. Но я на самом деле был занят попыткой добавить хранимую процедуру и все еще получать ошибку «источника данных», поэтому смотрите ниже, как я ее разрешил:

  2. Ошибка хранимой процедуры : Я пытался добавить хранимую процедуру, и каждый раз, когда я добавлял ее через окно дизайна EDMX, я получал ошибку «источник данных». Решение состояло в том, чтобы добавить хранимую процедуру как пустую (я сохранил имя и декларацию сохраненного процесса, но удалил содержимое хранимого процесса и заменил его на «select 1» и повторил попытку добавления его в EDMX). Это сработало! Предположительно EF не понравилось что-то внутри моего сохраненного процесса. После того, как я добавил proc в EF, я смог обновить содержимое proc в моей базе данных до того уровня, который мне нужен, и он работает, ошибка «источник данных» устранена.

странность

0 голосов
/ 23 июня 2011

У меня была эта проблема, когда я начал использовать 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 в решение.

...