문제

저는 VB.NET 및 VS2008의 부분 수업과 함께 일하는 법을 배우고 있습니다. 특히, SQLMetal에 의해 자동으로 생성 된 LINQ에서 SQL 클래스를 확장하려고합니다.

자동으로 생성 된 클래스는 다음과 같습니다.

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'. 부분 클래스의 두 절반은 동일한 네임 스페이스에 있습니다.

그렇다면 부분 클래스의 절반에서 부분 클래스의 자동으로 생성 된 절반의 속성에 어떻게 액세스합니까?

도움이 되었습니까?

해결책

vb.net이 C#에서 LINQ에서 SQL 파일에서 다른 재료를 생성하지 않는 한 DB 테이블의 클래스는 DataContext 클래스 내에 있지 않습니다.

그래서 당신은 수업이 있습니다 mynamespace.datacontext.concession 부분 클래스의 나머지 절반이 정말로 mynamespace.concession

다른 팁

(이것은 vb.net과 관련하여 C# 프로젝트의 차이점 일 수 있습니다)

LINQ-to-SQL 모델 속성을 구성하여 엔터티를 자체 네임 스페이스에 넣었습니다.

예 : myco.myproj.business.entities

그런 다음 비 LINQ 비즈니스 엔티티를 추가하여 모두 같은 네임 스페이스에 있습니다.

그러나 위의 부분 클래스 추가를 시도 할 때, 나는 부분 클래스 (즉, 자동 생성 된 LINQ 클래스가 아닌 생성 된 클래스)가 LINQ-to-SQL 모델과 동일한 프로젝트에 있어야한다는 것을 알았습니다. 그렇지 않으면 클래스 뷰와 객체 뷰어에는 두 개의 개별 클래스가 나타납니다. 이것이 버그인지 확실하지 않습니다. 아니면 내가 뭔가 잘못하고 있는지 확실하지 않습니다.

그러나 어쨌든, 일부 클래스 파일을 모델 작업과 동일한 프로젝트에 넣습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top