异常“指定的命名连接...与EntityClient提供程序,或无效。”在加载WPF设计器时

时间:2012-05-18 21:28:02

标签: c# wpf entity-framework

我正在使用Entity Framework编写WPF应用程序,我有两个控件,Window和UserControl,它嵌入在Window中。 UserControl设计器工作正常,但Window设计器返回异常:

The specified named connection is either not found in the configuration, not
intended to be used with the EntityClient provider, or not valid.

异常指向UserControl代码隐藏中的一行,我创建了一个实体实例。

public partial class Table : UserControl
{
    private MyEntities entity;
    public Table()
    {

        InitializeComponent();
        entity = new MyEntities();
    }
}

当我运行应用程序时,一切正常。

修改
我在这里找到了解决方案:WPF designer won't load with entity framework,虽然我正在使用VS2010,不久前这种方法(在同一个地方创建实体实例)工作正常,我不知道是什么打破了它。

1 个答案:

答案 0 :(得分:0)

问题很可能是设计模式中的初始化调用,这就是代码运行良好的原因。

您的实体应基于两个文件:FileName.edmx和FileName.Designer.vb(如果使用C#,则为.cs)。在设计模式下,Window尝试创建UserControl的新实例,然后创建实体的新实例(调用New)。但是,在设计模式下,VS不会查看App.Config文件(看起来有调试模式),其中保留了Entity的连接字符串。因此,当VS尝试创建新实体时,实体初始化调用中的一个方法失败,因为它接收到Null连接字符串,因此您得到错误。

快速而又脏的修复方法是在FileName.Designer.vb(FileName.Designer.cs)中手动输入连接字符串。如果您打开该文件(您可能必须单击解决方案资源管理器中的“显示所有文件”),那么在构造函数区域中应该有

Public Sub New()
MyBase.New("name=Entity"," "Entity")
End Sub

或在C#中

public New()
    {
        MyBase.New("name=Entity"," "Entity");
    }

如果用App.Config中的连接字符串替换调用的第一个参数以获取MyBase.New(ConnectionStringFromAppConfig,“”Entity“),一切都应该正常工作。您可能遇到的一个问题是类似于”的错误消息不支持关键字:'数据源'。“要解决这个问题,您需要在连接字符串中替换您使用单引号复制所有& quot。& quot是XAML编码单引号的方式。

希望有所帮助。如果有人要提供更优雅的解决方案 - 我将不胜感激。