Указанное именованное соединение либо не находится в конфигурации, не предназначено для использования с поставщиком EntityClient, либо недействительно

У меня есть один объект фреймворка сущности, и когда я добавляю его в свой проект, entitycontext connectionstring добавляется в app.config в секции connectionstring , но когда я хочу создать новый entitycontext и использовать эту entitycontext connectionstring , появляется эта ошибка

Я подозреваю, что ваша проблема исходит из того факта, что в вашем решении есть несколько проектов, и тот, который содержит фреймворк сущности, включая файлы edmx НЕ является проектом запуска решений. В этом случае, даже если строка соединения существует в проекте EF app.config , все еще CLR не может найти ее во время выполнения. Например, если в вашем решении есть веб-сайт и проект EF, вам необходимо скопировать строку подключения из приложения app.config проекта EF в web.config вашего веб-сайта. В принципе, любые данные строки соединения должны существовать в файле конфигурации проекта, который streamи .Net инициируются с помощью CLR (т. Е. Вашего проекта запуска). Если это не ваше дело, просто откройте свой файл edmx , щелкните правой кнопкой мыши на его поверхности, выберите свойства и скопируйте строку подключения и вставьте ее в свой раздел Connection String приложения.config. Таким образом, вы можете убедиться, что у вас есть правильный вариант в вашей конфигурации.

РЕДАКТИРОВАТЬ:
Как вы можете видеть здесь, в Documenation ObjectContext Constructor , первым параметром является имя соединительной строки, которое является кодом, созданным во время создания вашего EDM. Если каким-то образом имя вашего имени соединительной строки должно быть изменено, все, что вам нужно сделать, это щелкнуть правой кнопкой мыши на вашей модели и выбрать «Обновить модель из базы данных …», затем следовать мастеру, чтобы обновить ваше приложение и конструктор, чтобы отразить это изменение.

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

Я столкнулся с этой проблемой, когда попытался поместить мою собственную логику базы данных в .dll для использования несколькими проектами в моем решении.

Хотя .dll имеет правильный файл app.config, он не работает. Структуры Entity хотели получить информацию о соединении в app.config файла .exe. Копирование информации там просто отлично.

Решение Мортезы вставить строку подключения непосредственно в .edmx не сработало для меня, поскольку это не позволило мне вставить значение там, хотя это именно то, что я хотел сделать.

Привет, у меня была эта проблема, и это меня раздражало. В конце концов, я понял, в чем проблема. Первое, что вам нужно сделать, это убедиться, что app.config connectionstrings в app.config и web.config одинаковы. Затем вы должны дважды щелкнуть файл .edmx чтобы вы могли видеть таблицы. Как только вы нажимаете где-нибудь рядом с таблицами, но не на таблицах и переходите к свойствам. В раскрывающемся списке выберите ConceptualEntityModel и найдите имя контейнера Entity и запомните его.

Затем перейдите к разработчику файла edmx и откройте конструкторы. (конструктор – это подпапка файла edmx), конструкторы должны иметь два параметра в параметре BASE

 public DBEntities() : base("name=DBEntities", "DBEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } 

Это одна из них. первый параметр должен иметь имя файла проекта, в котором .edmx файл .edmx . Второй параметр должен иметь имя имени контейнера сущности из свойств, о которых я упоминал ранее. не забудьте упорядочить все конструкторы с помощью: base("", "")

По крайней мере, это была моя проблема, и моя проблема была решена именно так. Надеюсь, вам удастся решить ваши, как это.

У меня был вариант, который, казалось, никто не закрывал.

У меня был основной проект с несколькими моделями, а тестовый проект содержал модульные тесты. Проект тестирования работал, но затем остановился с ошибкой, упомянутой в OP. Я не переименовал или не переместил файл EDMX.

Многие советы касались сравнения файлов .config, но моего проекта не было вообще.

В конце концов, я скопировал файл app.config из основного проекта в свой тестовый проект, а затем он сработал. Является ли это правильным шагом или покажет проблемы с ремонтопригодностью при добавлении дополнительных моделей, я не знаю, но по крайней мере мои модульные тесты снова работают правильно.

Хотя ответ Мортезы Манави разрешает эту проблему, другое решение состоит в том, чтобы динамически строить строку соединения и передавать ее в конструктор для объекта ObjectContext:

 public static string CreateConnectionString() { var assemblyPath = Assembly.GetExecutingAssembly().Location; string assemblyLocation = Path.GetDirectoryName(assemblyPath); string dbPath = Path.Combine(assemblyLocation, "YourDatabase.sdf"); var sqlBuilder = new SqlConnectionStringBuilder { DataSource = dbPath }; var entityBuilder = new EntityConnectionStringBuilder { ProviderConnectionString = sqlBuilder.ConnectionString, Provider = "System.Data.SqlServerCe.3.5", Metadata = @"res://*/YourModel.csdl| res://*/YourModel.ssdl| res://*/YourModel.msl" }; return entityBuilder.ToString(); } // Snip... var entityContext = new YourObjectContext(CreateConnectionString()); 

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

Я забыл добавить providerName = “System.Data.EntityClient” в качестве атрибута в строке подключения. Это привело к такой ошибке, поэтому

  

вместо

  

Я просто обнаружил, что если приложение создано в IIS из VS2010 на двух уровнях от корня веб-сайта, эта ошибка возникнет. Не уверен, почему это происходит, нужно будет исследовать больше. Например, если ваше приложение находится в этом пути: /admin/advertiser , появится ошибка, если у вас нет /admin виртуального каталога на вашем сайте IIS.

Все, что я сделал, создано пустым каталогом admin в моей ошибке .../intepub/wwwroot .

Вы обнаружите, что вы не сможете начать отладку до тех пор, пока не сделаете шаг выше.

У нас была эта проблема в нашей команде в прошлом, это заняло некоторое время, чтобы помнить, но это было именно то, как мы ее исправили и раньше.

У меня была библиотека classов, которая тоже не хотела работать с EF. После того, как я скопировал app.config (или только раздел строки подключения) из моего classа libraray в проект exe, соединение работало нормально! Вероятно, файл конфигурации должен находиться в той же папке, что и проект exe, и поэтому не был найден. Поэтому всегда будьте дополнительными предупреждениями, когда файлы конфигурации используются в проекте библиотеки classов!

Я использую архитектуру n’tier и получаю ту же проблему, но это помогает мне. Надеюсь, это поможет вам. Сначала у вас есть такая же connection string в ваших libraries где вы можете получить доступ к БД, как в app.config и web.config после чего вы просто добавляете перегруженный конструктор в файл .edmx (Model.context.cs), который теперь имеет два конструктора: по умолчанию, а другой – только что добавленный (перегруженный).

  public YourEntityName(string connString) : base(connString) { } 
  • Как установить значение по умолчанию для POCO в EF CF?
  • Не удалось выполнить проверку для одного или нескольких объектов. Дополнительную информацию см. В разделе «Свойство EntityValidationErrors».
  • Есть ли в Entity Framework 4 Code First поддержка генераторов идентификаторов, таких как NHibernate?
  • Исключить поле / свойство из базы данных с Entity Framework 4 и Code-First
  • Результат запроса нельзя перечислить более одного раза
  • Обнаружено, что
  • Entity Framework объединяет 3 таблицы
  • Сравнение с регистром LINQ to Entities
  • Entity Framework: Где я могу расширить CSDL / MSL?
  • Использование MySql с Entity Framework 4 и Code-First Development CTP
  • Шаблон хранилища, POCO и бизнес-объекты
  • Давайте будем гением компьютера.