【发布时间】:2011-01-28 05:40:36
【问题描述】:
这是一个奇怪的。
重命名课程后,我的一个表单开始在设计器中出现错误,拒绝打开。有趣的是,当我运行程序时,表单工作得很好。
我开始还原我的更改以推断问题。我现在已经完全恢复到上次提交 - 我知道表单在设计器中工作 - 清理了解决方案,并删除了 bin/ 和 obj/ 文件夹,以及 *. suo 文件以备不时之需。
表单仍然没有显示在设计器中。
这是它给出的错误:
- 找不到“MyNamespace.MyControl”。请确保引用了包含此类型的程序集。如果此类型是您开发项目的一部分,请确保该项目已成功构建。
- 变量“myControl1”未声明或从未赋值。
变量被声明和赋值,并且 MyControl 构建良好(同样,当程序实际运行时,表单工作正常)。更奇怪的是,如果我尝试创建一个新表单并将 MyControl 拖到它上面,我会收到这个 Entity-Framework 错误:
未能创建组件“MyControl”。错误信息如下: 'System.ArgumentException:在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。 在 System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串 newConnectionString) 在 System.Data.EntityClient.EntityConnection..ctor(字符串连接字符串) 在 System.Data.Objects.ObjectContect.CreateEntityConnection(字符串连接字符串) 等等等等。
我的连接字符串没有任何问题:它以前工作过,而且,当我实际运行程序时它再次工作(控件已经存在于上一次提交的旧表单上)。
有什么想法吗?我完全不知所措。
[编辑] 唯一重要的代码:
MyControl.cs
public MyControl()
{
_entities = new MyEFEntities(); //Entity-framework generated class
}
MyForm.Designer.cs
private void InitializeComponent()
{
this.myControl1 = new MyNamespace.MyControl();
...
this.Controls.Add(this.myControl1);
}
MyEFDatabase.Designer.cs
public MyEFEntities() : base("name=MyEFEntities", "MyEFEntities") { ... }
App.Config
<connectionStrings>
<add name="MyEFEntities" connectionString="metadata=res://*/MyEFDatabase.csdl|res://*/MyEFDatabase.ssdl|res://*/MyEFDatabase.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyDatabaseServer;Initial Catalog=MyDatabase;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
我尝试了 “用 ' 替换 &quot;” 技巧 - 没有帮助。
[Edit2] 新项目也会发生这种情况,但不会立即发生。只是在摆弄了一下之后(它与添加 EF 自己没有弄清楚的多对一关系有关),但我无法弄清楚重现的确切步骤。
【问题讨论】:
-
通常发生这种情况时,我只需重新启动 VS,错误就会消失
-
不走运 - 刚刚完成重新启动我的计算机,但它仍在发生。
-
mmmm 我的下一个猜测 =P.... 命名空间好吗?
-
@Luiscencio:是的,一切都在同一个命名空间下。我只是尝试检查一个新副本;仍在发生。
-
你能发布你的设计器代码和 MyControl 类...链接最好
标签: c# visual-studio-2008 entity-framework designer