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

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

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

  • PizzaSoftware.Data​​li >
  • 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"
/>

Что может вызвать эту ошибку?

4b9b3361

Ответ 1

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

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

Обратите внимание на " Попробуйте изменить это на одну цитату '

Ответ 2

Скопировать <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>

Ответ 3

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

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

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

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

Ответ 4

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

Название строки подключения в конфигурации - "SaharaPizzaEntities". Вы конкретно указали "именованное соединение" при создании контекста вашего объекта?

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

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

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

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

Ответ 5

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

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

Надеюсь, это поможет вам.

Ответ 6

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

Ответ 7

В моем проекте также стояла одна и та же проблема. У меня было 3 разных проекта

  • Данные, в которых я добавил структуру сущности. этот проект имел файл App.config со строкой соединения
  • Ведущий: с моим Ведущим
  • Просмотр: с пользовательским интерфейсом.

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

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

Ответ 8

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

  

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

  <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://*

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

поместите пространство имен вместо * в файл appconfig

мое пространство имен 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" />

Ответ 9

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

Ответ 10

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