2012-09-26 53 views
0

我有以下几行代码作为测试用户控件。在构建项目时,我将此用户控件拖放到窗体上,出现错误对话,表明EF无法找到上下文的连接字符串。然而,当我在表单中使用相同的变量时,一切都很好。看起来,用户控件使用不同的上下文来查找连接字符串,而不是通常的app.config。为什么我的VB.NET用户控件不能实例化ObjectContext?

Public Class InvoiceWorkOrderSearch 
    Private _dataHelper As WorkOrderData = New WorkOrderData() 
End Class 
+0

是在从中你将它添加到一个单独的项目的用户控件? –

+0

@TimBJames不,同一个项目。 – ProfK

+0

单独的用户界面和数据层。用户控件中的上下文很糟糕。 –

回答

1

在设计时间?

如果控件处于运行时模式,则可以避免这种情况仅为实例化对象。

建立财产来检查设计时间(Me.DesignMode)是穷人,因为它只告诉你,如果你目前正在设计控制本身。如果将usercontrol放在表单上,​​它将会返回false。

您可以使用此代码来检查设计时:http://dotnet-snippets.de/dns/designmode-workaround-windows-forms-SID299.aspx

Public Class InvoiceWorkOrderSearch 
    Private _dataHelper As WorkOrderData 

    Public Sub New() 
     If IsDesignMode(me) = False Then 
      _dataHelper = New WorkOrderData() 
     End If 
    End Sub() 
End Class 
+0

我使用了类似于这个答案的东西,但是我也使用了#如果调试#else #EndIf用于其他场景... IsDesignMode非常适合拖放控件。 –

+0

你不能使用#Debug伪指令,因为如果你部署了一个调试版本,它将评估为true。 –

+0

这解决了本来会有无数其他相关问题。谢谢。 – ProfK

相关问题