Подтвердить что ты не робот

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

У меня есть приложение asp.net-mvc с базой данных членства по умолчанию. Я обращаюсь к нему с помощью ADO.NET Entity Framework.

Теперь я хочу переместить его в IIS, но появилось несколько проблем. Мне пришлось установить SQL Server Management Studio, Создать новый DB, импортировать туда все данные из предыдущего файла .MDF. Осталось только сделать (насколько мне известно) изменение строки подключения. Тем не менее, я не очень разбираюсь в этом и продолжаю получать ключевое слово, не поддерживаемое: "источник данных". исключение. Вот моя строка подключения:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

Любые идеи, что не так?

4b9b3361

Ответ 1

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

Марк

UPDATE: Хорошо, я понимаю, что вы пытаетесь сделать: вам нужна вторая строка соединения "ADO.NET" только для базы данных пользователя/членства ASP.NET. Ваша строка в порядке, но имя поставщика неверно - это должно быть "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

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

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

У меня возникла эта проблема, когда я начал использовать Entity Framework, это произошло, когда я не изменил старое подключение SQL-сервера к соединению EntityFrameWork.

Решение: в файле, где выполняется соединение через файл web.config "добавить name=" Объекты "connectionString = XYZ", убедитесь, что вы имеете в виду правильное соединение, в моем случае я должен был сделать это

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

вызовите MyEntityFrameworkConnection, когда необходимо установить соединение.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;

Примечание: соединение в файле web.config будет сгенерировано автоматически при добавлении модели Entity к решению.

Ответ 5

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

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

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

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

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

странность

Ответ 6

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

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

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