2010-11-23 3 views
1

Я застреваю при попытке создать простейший частичный класс, чтобы получить доступ к свойству таблицы.VB Частичный класс ... застрял!

У меня есть 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 не дает мне никаких свойств Конкурса (т.е. данные колонны).

Я пробовал все виды Partial Public, добавляя пространство имен так же, как и то, которое используется в автогенерации ... Ничего не работает.

Может ли кто-нибудь предоставить рабочий образец, пожалуйста?

ответ

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

Ok, спасибо, ребята ... Я, наконец, получить, что материал работает, добавлением того же пространства имен декларации, как это:

Namespace VuBridgeDB 
Partial Public Class VubridgeDB 

    Private Sub InsertCompetitions(ByVal instance As Competitions) 

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

    End Sub 

End Class 

End Namespace

Как только это сделано, Intellisense полностью распознает параметр экземпляра.

 Смежные вопросы

  • Нет связанных вопросов^_^