从基本表单访问连接字符串会导致设计器错误

时间:2012-09-26 13:00:52

标签: winforms visual-studio-2010 inheritance app-config windows-forms-designer

我有一个vb.net windows窗体应用程序,其中我正在使用Windows窗体的继承。我有一个基本表单,提供了一些将与所有继承表单一起使用的基本布局和方法。这包括在基本形式构造函数中初始化实体框架上下文。

Dim dataContext As New CCEntities()

然后,子表单可以使用此上下文。应用程序编译并运行时没有错误,但是当我尝试在设计器中查看子窗体时,会显示一条错误,指出“在配置中找不到指定的命名连接,不打算用于EntitlyClient提供程序,或无效。“如果我将该初始化行移动到子表单构造函数中,设计器将显示没有错误。

为了解决这个问题,我在基本表单构造函数的初始化时指定了连接字符串:

Dim dataContext As New CCEntities(System.Configuration.ConfigurationManager.ConnectionStrings.Item("CCEntities").ConnectionString)

在添加对连接字符串的引用后,子表单现在显示“对象引用未设置为对象的实例。

但是,如果我将实体连接字符串硬编码到该初始化行中,则设计人员可以正常工作。

基本表单似乎无法访问app.config文件。如何让基本表单正确访问app.config文件并使设计人员正常工作?

1 个答案:

答案 0 :(得分:1)

当您处于“设计时”时,您需要做的是阻止代码运行。

if(System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Designtime)
{
     //do connection stuff here
}