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

У меня есть два проекта в решении.

  1. PizzaSoftware.Data
  2. PizzaSoftware.UI

В проекте Data у меня есть модель Entity Framework, которая подключается к моей базе данных.

Мой проект пользовательского интерфейса имеет ссылку на проект Data и вот как это выглядит:

enter image description here

Я создал пользовательский элемент управления в папке UserControls.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PizzaSoftware.Data;

namespace PizzaSoftware.UI.UserControls
{
    public partial class AutoCompleteTextBox : UserControl
    {
        AutoCompleteStringCollection completeCollection = new AutoCompleteStringCollection();

        public AutoCompleteTextBox()
        {
            InitializeComponent();
        }

        private void AutoCompleteTextBox_Load(object sender, EventArgs e)
        {
            CustomerRepository repo = new CustomerRepository();
            var customers = repo.FindAllCustomers().ToList();

            foreach (var customer in customers)
            {
                completeCollection.Add(customer.Name);
            }

            txtSearchBox.AutoCompleteMode = AutoCompleteMode.Suggest;
            txtSearchBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtSearchBox.AutoCompleteCustomSource = completeCollection;
        }
    }
}

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

Вот как выглядит моя строка подключения:

<connectionStrings>
   <add 
      name="SaharaPizzaEntities"
      connectionString="
         metadata=res://*/PizzaSoftwareEntityModel.csdl|res://*/PizzaSoftwareEntityModel.ssdl|res://*/PizzaSoftwareEntityModel.msl;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
            Data Source=.\SQLEXPRESS;
            Initial Catalog=SaharaPizza;
            Integrated Security=True;
            MultipleActiveResultSets=True
         &quot;"
      providerName="System.Data.EntityClient"
/>

Что может быть причиной этой ошибки?

Ответы [ 10 ]

19 голосов
/ 22 мая 2012

Скопируйте <connectionStrings> из App.Config из PizzaSoftware.Data в web.config из PizzaSoftware.UI и добавьте в web.config

<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
10 голосов
/ 04 апреля 2011

В вашем app.config строка подключения выглядит следующим образом: *

   connection string=&quot;
      Data Source=.\SQLEXPRESS;
      Initial Catalog=SaharaPizza;
      Integrated Security=True;
      MultipleActiveResultSets=True
   &quot;

Обратите внимание на ". Попробуйте изменить это на одну кавычку"

2 голосов
/ 18 июля 2012

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

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

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

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

0 голосов
/ 23 апреля 2014

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

0 голосов
/ 13 ноября 2013

У меня та же проблема, и я попробовал все вышеупомянутые методы. наконец я решил это, как уже упоминалось. В моем случае у меня есть отдельный уровень данных и уровень представления. в моем app.config (слой данных) у меня есть такое соединение.

<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

в моем web.config я вручную настроил соединение следующим образом:

<add name="DefaultConnection" providerName="System.Data.SqlClient"
 connectionString="Data Source=abc;
 Initial Catalog=LibraryMgtSys;
 Integrated Security=SSPI;
 user id=sa;password=123;" />

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

мой окончательный web.config файл выглядит следующим образом:

<connectionStrings>
    <clear />
    <add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=TILANITHOTAMUNE\SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    <add name="DefaultConnection" providerName="System.Data.SqlClient"
         connectionString="Data Source=abc;
         Initial Catalog=LibraryMgtSys;
         Integrated Security=SSPI;
         user id=sa;password=123;" />
  </connectionStrings>
0 голосов
/ 07 ноября 2013

Вот пример строки подключения, которая не работала

моя ошибка при задании строки подключения была

  <connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Проблема с путем

см. * Используемый в строке подключения

"metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*

замените * пространством имен, в котором находится ваш файл edmx

поместите пространство имен вместо * в ваш appconfigfile

мое пространство имен файла edmx - IemrWebs.Data.Model, поэтому я заменил * на IemrWebs.Data.Model, см. ниже, и оно работает. Ниже приведена правильная строка подключения

<connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://IemrWebs.Data.Model/IemrWebs.csdl|res://IemrWebs.Data.Model/IemrWebs.ssdl|res://IemrWebs.Data.Model/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

0 голосов
/ 02 февраля 2013

Я также столкнулся с той же проблемой в моем проекте.У меня было 3 разных проекта

  1. Данные, в которые я добавил структуру сущностей.в этом проекте был файл App.config со строкой подключения
  2. Presenter: с моим Presenter
  3. View: с пользовательским интерфейсом.

Я просто скопировал строку подключенияв конфигурации приложения View, и он работает нормально.

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

0 голосов
/ 05 августа 2012

Проблема может быть легко решена.Просто скопируйте строку подключения из Aap.Config в Web.config файл, это обязательно запустит ваши приложения.Это правильно работает для меня.
Ошибка возникает, когда у вас есть класс данных / сущность в другом проекте и веб-страницы в отдельном проекте.

0 голосов
/ 19 апреля 2012

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

извините, пожалуйста, мой английский.

Я надеюсь, что это может помочь вам

0 голосов
/ 27 марта 2011

Строка соединения выглядит как допустимая строка для провайдера EntityClient, поэтому я предполагаю, что из сообщения об исключении «указанное именованное соединение не найдено в конфигурации».

Имя строки подключения в конфигурации: «SaharaPizzaEntities». Вы явно указали «именованное соединение» при создании контекста производного объекта?

Класс сгенерированного объекта имеет несколько конструкторов, один из которых не имеет параметров:

public EntityModelContainer() : base("name=EntityModelContainer",
    "EntityModelContainer")

name=EntityModelContainer - это имя строки подключения, которое должно соответствовать строке подключения в файле конфигурации («SaharaPizzaEntities»). Вы можете изменить имя в файле конфигурации или использовать второй конструктор, который позволяет точно определить имя строки подключения:

public EntityModelContainer(string connectionString) : base(connectionString,
    "EntityModelContainer")
...