我在解决方案中有两个项目。
在Data项目中,我有我的Entity Framework模型,它连接到我的数据库。
我的UI项目有一个对Data的项目引用,以及它的外观:
我在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"
/>
可能导致此错误的原因是什么?
答案 0 :(得分:19)
将App.Config中的<connectionStrings>
从PizzaSoftware.Data复制到web.config
PizzaSoftware.UI并添加到web.config
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
答案 1 :(得分:10)
在app.config中,您的连接字符串看起来像..
connection string="
Data Source=.\SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
"
注意&amp; quot。尝试将其更改为单引号“
答案 2 :(得分:2)
我刚刚发现如果应用程序的虚拟目录是从VS2010在IIS中从网站根目录创建的两个级别,则会发生此错误。不确定为什么会发生,需要进一步调查。
例如,如果您的应用位于此路径中:/admin/advertiser
如果您的IIS站点中没有/admin
虚拟目录,则会出现错误。
我所做的只是在admin
中创建了一个空的.../intepub/wwwroot
目录,错误消失了。
您会发现在执行上述步骤之前,您将无法开始调试。
我们团队过去遇到过这个问题,需要花一些时间才能记住,但这正是我们之前修复过的问题。
答案 3 :(得分:0)
连接字符串看起来像是EntityClient提供程序的有效字符串,因此我的猜测是来自异常消息“在配置中找不到指定的命名连接”。
配置中连接字符串的名称是“SaharaPizzaEntities”。在创建派生对象上下文时,是否明确指定了“命名连接”?
生成的对象上下文类有几个构造函数,一个是无参数的:
public EntityModelContainer() : base("name=EntityModelContainer",
"EntityModelContainer")
name=EntityModelContainer
是连接字符串名称,必须与配置文件中的连接字符串匹配(“SaharaPizzaEntities”)。您可以更改配置文件中的名称,也可以使用允许明确定义连接字符串名称的第二个构造函数:
public EntityModelContainer(string connectionString) : base(connectionString,
"EntityModelContainer")
答案 4 :(得分:0)
我有同样的问题,所以我正在使用像你这样的2线程,我认为这是因为在库中没有运行,然后我把它放在主项目中,然后开始工作成功完成。 这可能是一个解决方案,而不是您需要的解决方案,但您可以通过此
来解决请原谅我的英语。
我希望这可以帮到你
答案 5 :(得分:0)
问题很容易解决。只需将您的连接字符串从Aap.Config
复制到Web.config
文件,这肯定会运行您的应用。这适合我。
当您在另一个项目中的数据类/实体和单独项目中的WebPages时,会发生错误。
答案 6 :(得分:0)
我的项目也遇到了同样的问题。 我有3个不同的项目
我刚刚在View的app配置中复制了Connection字符串,它运行正常。
问题的原因是&#34;&#34;&#34;连接字符串在本地不可用,需要的地方&#34;&#34;&#34;。
答案 7 :(得分:0)
这是一个无法正常工作的示例连接字符串
给出连接字符串的错误是
<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://*
将*替换为放置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" />
答案 8 :(得分:0)
我遇到了同样的问题&amp;我尝试了所有提到的方法。最后我按照提到的解决了它。在我的情况下,我有单独的数据层和表示层。在我的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
i手动配置的连接中,如下所示:
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=abc;
Initial Catalog=LibraryMgtSys;
Integrated Security=SSPI;
user id=sa;password=123;" />
它给了我与上面提到的相同的例外。所以我通过在web配置文件中添加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>
答案 9 :(得分:0)
我认为您的配置文件不在Web项目中,它在其他DLL中....不太确定...但您的连接字符串应该在正在执行的项目的web.config中... < / p>