부분 클래스의 나머지 절반의 구성원 액세스
-
04-07-2019 - |
문제
저는 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 모델과 동일한 프로젝트에 있어야한다는 것을 알았습니다. 그렇지 않으면 클래스 뷰와 객체 뷰어에는 두 개의 개별 클래스가 나타납니다. 이것이 버그인지 확실하지 않습니다. 아니면 내가 뭔가 잘못하고 있는지 확실하지 않습니다.
그러나 어쨌든, 일부 클래스 파일을 모델 작업과 동일한 프로젝트에 넣습니다.