Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ключевое слово не поддерживается источник данных

Автор вопроса: TrimackОтветов: 6

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

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

  • У меня была эта ошибка, когда у меня был выбран неправильный запускаемый проект, поэтому VS не смог найти мои строки подключения. Убедитесь, что выбран запускаемый проект с app.config. wnbates 03.07.2020

entity-frameworkconnection-string

Ответы

Ответ 1 · рейтинг 152 · marc_s

У вас есть действительная строка подключения 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

Ответ 2 · рейтинг 7 · Baldy

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

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

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

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

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

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

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...

Ответ 3 · рейтинг 2 · Satish Singh

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

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

Ответ 4 · рейтинг 1 · Hasiya

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

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

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

Ответ 5 · Mubarak

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

Ответ 6 · Spyder

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

Обычно это ошибка строки подключения. Проверьте формат строки подключения. Вы можете найти строку подключения entity framework или следовать приведенным выше предложениям.

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

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

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

странность

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы