2010-11-23 69 views
1

我試圖創建最簡單的部分類以訪問表屬性時被卡住。VB Partial class ...卡住了!

我有一個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 

問題:

  1. VB.NET拒絕類名myClassDataContext說它已經存在。

  2. 我期待C_Site屬性可以在我自己的類(以及其他競賽專欄)中使用,但是當我鍵入「我」時,IntelliSense不會給我任何競爭屬性(即數據列)。

我已經嘗試過各種部分公開,在自動生成中使用相同的名稱空間...沒有任何作用。

有人可以提供一個工作示例嗎?

回答

4

你需要做的myClassDataContext局部過你的其他聲明:

Public Partial Class myClassDataContext 
    Private Sub InsertCompetitions(ByVal instance As Competitions) 
     ... 
    End Sub 
    ... 
End Class 

否則VB編譯器認爲你想聲明另一個「獨立」級恰好具有相同的名稱。

這將解決您的兩個問題 - 其他屬性等目前不在您的「額外」類代碼中出於完全相同的原因。

0

與我們合作的類聲明只是Partial Class myClassDataContext在一個單獨的文件中,僅此而已。這應該在原始類的相同程序集(dll或exe)和命名空間中。

1

好,感謝你們......我終於得到這些東西加入同一個命名空間聲明,像這樣的工作,

Namespace VuBridgeDB 
Partial Public Class VubridgeDB 

    Private Sub InsertCompetitions(ByVal instance As Competitions) 

     MsgBox("Inserting " & instance.C_Title, vbInformation) 

    End Sub 

End Class 

末命名空間

一旦做到這一點,完全智能感知識別實例參數。