我正在使用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,不久前这种方法(在同一个地方创建实体实例)工作正常,我不知道是什么打破了它。
答案 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编码单引号的方式。
希望有所帮助。如果有人要提供更优雅的解决方案 - 我将不胜感激。