Доступ к членам другой половины частичного класса - PullRequest
1 голос
/ 26 октября 2008

Я только учусь работать с частичными классами в VB.NET и VS2008. В частности, я пытаюсь расширить класс LINQ to SQL, который был автоматически создан SqlMetal.

Автоматически сгенерированный класс выглядит так:

Partial Public Class DataContext
    Inherits System.Data.Linq.DataContext

 ...


<Table(Name:="dbo.Concessions")>  _
Partial Public Class Concession

 ...

     <Column(Storage:="_Country", DbType:="Char(2)")>  _
   Public Property Country() As String
          ...
    End Property

 ...

End Class

В отдельном файле вот что я пытаюсь сделать:

Partial Public Class DataContext

    Partial Public Class Concession

        Public Function Foo() as String
            Return DoSomeProcessing(Me.Country)
        End Function

    End Class

End Class

... но я получаю синие неровности под 'Me.Country' и сообщением 'Country' is not a member of 'DataContext.Concession' Обе половины частичного класса находятся в одном пространстве имен.

Итак, как мне получить доступ к свойствам автоматически сгенерированной половины частичного класса из моей половины частичного класса?

Ответы [ 2 ]

3 голосов
/ 26 октября 2008

Если VB.NET не генерирует разные вещи в своих файлах LINQ to SQL из C #, классы таблиц БД находятся не в классе DataContext, а рядом с ним.

Итак, у вас есть класс MyNamespace.DataContext.Concession , когда другая половина частичного класса действительно MyNamespace.Concession

0 голосов
/ 14 марта 2011

(Это относится к VB.NET - могут быть различия с проектами на C #)

Я поместил свои сущности в их собственное пространство имен, настроив свойство модели Linq-to-SQL.

например. MyCo.MyProj.Business.Entities

Затем я также добавляю не связанные с Linq бизнес-объекты, чтобы они все были в одном пространстве имен.

Однако, пытаясь сделать вышеупомянутые частичные добавления классов, я обнаружил, что частичный класс (то есть тот, который вы генерируете, а не автоматически сгенерированный класс LINQ) ДОЛЖЕН быть в том же проекте, что и модель Linq-to-SQL , В противном случае в Class View и Object Viewer вы видите два отдельных класса - по-видимому, в одном и том же пространстве имен, но не совсем. Не уверен, что это ошибка или я что-то не так делаю.

Но, в любом случае, помещение файла частичного класса в тот же проект, что и ваша модель, работает.

...