Указанное именованное соединение либо не находится в конфигурации, не предназначено для использования с поставщиком EntityClient, либо недействительно
У меня есть два проекта в решении.
- PizzaSoftware.Datali >
- 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="
Data Source=.\SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
""
providerName="System.Data.EntityClient"
/>
Что может вызвать эту ошибку?
Ответы
Ответ 1
В вашем app.config ваша строка подключения выглядит как.
connection string="
Data Source=.\SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
"
Обратите внимание на " Попробуйте изменить это на одну цитату '
Ответ 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="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"" 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="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"" 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="data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True"" 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="data source=TILANITHOTAMUNE\SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True"" 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 выполняемого проекта...