1

저는 VB.NET과 VS2008의 부분 클래스로 작업하는 법을 배우고 있습니다. 특히, 나는 SqlMetal에 의해 자동으로 생성 된 LINQ to SQL 클래스를 확장하려고합니다.부분 클래스의 나머지 절반의 멤버에 액세스

가 자동으로 생성 된 클래스는 다음과 같다 : '

Partial Public Class DataContext 

    Partial Public Class Concession 

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

    End Class 

End Class 

을 ...하지만 나는 아래 파란색 계단 현상을 얻을 : 별도의 파일에

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 

, 여기에 내가 할 노력하고있어입니다 Me.Country '이고 메시지는 'Country' is not a member of 'DataContext.Concession'입니다. 부분 클래스의 두 반쪽은 모두 동일한 네임 스페이스에 있습니다.

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

답변

3

VB.NET에서 C#의 LINQ to SQL 파일에 다른 내용을 생성하지 않으면 DB 테이블의 클래스가 DataContext 클래스 내에 있지 않습니다. 부분 클래스의 나머지 절반은 정말 MyNamespace.Concession

+0

그게 전부 야! 포인터 주셔서 감사. –

0

그래서 당신은 클래스 MyNamespace.DataContext.Concession이 (VB.NET이 관련 - C# 프로젝트와 차이가있을 수 있습니다)

Linq-SQL 모델 속성을 구성하여 고유 한 네임 스페이스에 엔티티를 추가했습니다.

MyCo.MyProj.Business.Entities

그런 다음 비 Linq 비즈니스 엔티티도 추가하여 동일한 네임 스페이스에 있습니다.

그러나 위의 부분 클래스 추가를 시도 할 때 부분 생성 클래스 (즉, 자동 생성 LINQ 클래스가 아닌 생성 클래스)가 Linq-to-SQL과 동일한 프로젝트에 있어야 함을 발견했습니다 모델. 그렇지 않으면 클래스 뷰와 객체 뷰어에서 두 개의 별도 클래스를 볼 수 있습니다 - 같은 네임 스페이스에있는 것처럼 보이지만 실제로는 아닙니다. 이것이 버그인지 확실하지 않거나 잘못하고 있습니다.

하지만 어쨌든 모델과 동일한 프로젝트에 부분 클래스 파일을 넣는 것이 좋습니다.

관련 문제