Вопрос

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

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

<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=&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 designer должно создать для вас допустимую строку подключения EF в вашем web.config или app.config.

Марк

Обновить:Хорошо, я понимаю, что ты пытаешься сделать:вам нужен второй "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 ==> Структура сущностей строка подключения (с метаданными= и всем остальным).

Если вам нужно и укажите 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 server на EntityFramework connection.

Решение:в файле, к которому осуществляется подключение через web.config, "добавить имя="Сущности"ConnectionString=XYZ", убедитесь, что вы ссылаетесь на правильное соединение, в моем случае я должен был это сделать

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

    }

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

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

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

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

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

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

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

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

странность

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top