2009-07-27 1 views
1

LINQ to SQL 테이블 개체에 대해 OnCreated를 확장하는 경우 해당 테이블이 속한 데이터 컨텍스트에 대한 참조를 가져올 수 있습니까? 나는 데이터 컨텍스트에 속성을 추가하는 경우 예를 들어, :LINQ to SQL : 테이블 개체를 확장 할 때 데이터 컨텍스트를 참조 할 수 있습니까?

Partial Class MyTable 

    Private Sub OnCreated() 
     Dim contextValue = [data_context_reference_here].MyValue 
    End Sub 

End Class 

내가 원하는하지 않습니다

Partial Class MyDataContext 

    Private _myValue As String 
    Public ReadOnly Property MyValue As String 
     Get 
      Return _myValue 
     End Get 
     Set(ByVal value As String) 
      _myValue = value 
     End Set 
    End Property 

End Class 

테이블의 생성 이벤트에서 그 값에 액세스 할 수있는 방법, 즉이있다 데이터 컨텍스트의 속성은 인스턴스별로 다를 수 있기 때문에 Shared로 지정해야합니다. 나는 디자이너 코드를 통해 레퍼런스가 어디에 있는지 파악했지만 아직 행운은 없다. 어떤 아이디어?

+1

왜이 속성에 액세스해야한다고 생각합니까? 아마도 이렇게 할 필요는 없습니다 ... more info please –

+0

디버깅 용입니다. 디버깅 클래스의 한 인스턴스를 컨텍스트에 전달한 다음 해당 컨텍스트의 테이블에있는 모든 이벤트에서 액세스 할 수 있어야합니다. (그래서 "MyValue"는 디버거 인스턴스가 될 것입니다 - 간단히하기 위해 문자열로 만들었습니다.) – gfrizzle

답변

1

LINQ에는 생성 테이블 객체가 SQL-없습니다 있습니다 - 단 하나의 행 객체. DataContext가 소유하고있는 객체는 Table(Of TRowType)입니다. 따라서 부분 클래스 OnCreated은 행 클래스에 있고 행이 생성 될 때마다 호출됩니다.

생성 된 행 개체는 INotifyPropertyChanged 및 을 구현하지만 기본 클래스에서 파생되지는 않습니다. OnCreated에는 매개 변수가 없으므로 행에서 해당 테이블을 통해 (해당 메소드를 통해) 생성 된 DataContext가 훨씬 적다는 것을 확인할 방법이 없습니다.

원하는대로 다른 방법을 찾아야합니다.

1

나는 그것이 Linq2sql에서 Linq에 2 SQL

에 대해 잘못된 패턴 말할 것이다, 당신을 MyTable 같은 임의의 행 개체 컨텍스트없이 생성 될 수 있음을 가정한다. 나중에는 예를 들어

(지정된 컨텍스트) 테이블에 첨부 할 수 있습니다

Dim myTable as new MyTable() 
dataContext.GetTable(Of MyTable).Attach(myTable) 

그래서 현실에서, 당신은 만드는 데 사용 된 데이터 컨텍스트에 따라 달라집니다 MyTable에 클래스 내부에 논리를 작성해서는 안 이 객체는 dataContext 없이도 만들 수 있기 때문에 일부 객체는 연결하거나 분리 할 수 ​​있습니다 ...

관련 문제