在尝试创建最简单的部分类以访问表属性时,我陷入困境。
我有一个LINQ自动生成的DataContext:
Namespace VuBridgeDB
<System.Data.Linq.Mapping.DatabaseAttribute(Name:="C:\Users\Didier\Documents\Visual Studio 2010\Projects\VuBridge1\VuBridge1\Data\VuBridgeDB.sdf")> _
Partial Public Class myClassDataContext
Inherits System.Data.Linq.DataContext
Private Shared mappingSource As System.Data.Linq.Mapping.MappingSource _
= New System.Data.Linq.Mapping.AttributeMappingSource()
Partial Private Sub InsertCompetitions(ByVal instance As Competitions)
End Sub
End Class
<Table(Name:="Competitions")> _
Partial Public Class Competitions
Partial Private Sub OnC_TitleChanged()
End Sub
End Class
现在我尝试在我的一个类中添加自己的业务逻辑:
Public Class myClassDataContext
Private Sub InsertCompetitions(ByVal instance As Competitions)
End Sub
End Class
Public Class Competitions
Private Sub onC_SiteChanged()
Me.
End Sub
End Class
问题:
VB.NET拒绝类名myClassDataContext说它已经存在。
我期待C_Site属性在我自己的类(以及其他比赛专栏)中可用,但是当我输入“Me。”时,IntelliSense不会给我任何竞赛属性(即数据栏)。
我尝试过各种各样的Partial Public,添加名称空间与自动生成的名称空间相同......没什么用。
有人可以提供工作样品吗?
答案 0 :(得分:4)
你需要另外声明myClassDataContext
部分声明:
Public Partial Class myClassDataContext
Private Sub InsertCompetitions(ByVal instance As Competitions)
...
End Sub
...
End Class
否则VB编译器会认为您正在尝试声明另一个具有相同名称的“独立”类。
这将解决您的两个问题 - 由于完全相同的原因,您的“额外”类代码中不存在其他属性等。
答案 1 :(得分:1)
好的,谢谢你们......我终于通过添加相同的命名空间声明来完成这些工作,,如下所示:
Namespace VuBridgeDB
Partial Public Class VubridgeDB
Private Sub InsertCompetitions(ByVal instance As Competitions)
MsgBox("Inserting " & instance.C_Title, vbInformation)
End Sub
End Class
结束命名空间
完成此操作后,Intellisense将完全识别实例参数。
答案 2 :(得分:0)
与我们合作的类声明只是Partial Class myClassDataContext
在一个单独的文件中,仅此而已。这应该在原始类的同一个程序集(dll或exe)和名称空间中。