2009-02-06 4 views
0

SQL 클래스, Person 및 Department에 대해 몇 개의 Linq가 있다고 가정 해 보겠습니다. 사람에게는 부서와 관련된 단체가 있습니다.Linq to SQL catch 엔터티 연결 변경을위한 OnChanged "이벤트"

부분 클래스에서 OnNameChanging 및 OnNameChanged를 사용하여 Person.Name에 대한 변경 사항을 잡을 수 있지만 디자이너 생성 코드가 OnDepartmentChanging 또는 OnDepartmentChanged를 호출하지 않는 것 같습니다. 이러한 변화를 어떻게 잡을 수 있습니까?

답변

1

속성을 비공개로 설정하거나 (dbml에서 Code 속성을 선택하고 속성 창에서 액세스 속성을 설정하는) 옵션을 선택하고 더 많은 제어 권한을 가진 새로운 public 속성을 만들 수 있습니까? 이 속성은 private 속성을 호출하고 이벤트를 발생시킬 수 있습니다.

저는 개인적으로 (sqlmetal과 같은) 나를 위해 필요한 파일을 생성하는 생성기를 작성하여 코드 전체를 제어 할 수있게되었습니다. 생성 된 dbml이 마음에 들지 않으면 아마도이 옵션을 사용할 수도 있습니다. 나는 그것이 도움이되기를 바랍니다 Can you prevent LinqDataSource from setting a property?

:

이 내가이 질문에 준 것과 같은 대답은 거의 정확하게 BTW입니다.

+0

잠재적으로 나는 그것을 할 수있다. 사실 나는 LLBLGEN Linq가 SQL 디자이너 코드로 그렇게 할 수 있다고 생각한다. 그렇다면 MS 디자이너 (생성 된 코드에 대해 더 많은 옵션이 있어야 함)를 삭제해야합니다. –

+0

하지만 기존 코드 gen/partial 클래스 모델을 사용하는 것이 더 좋은 방법이 될 것 같습니다. 부분 클래스의 문제는 속성을 "재정의"할 수 없다는 것입니다. 어쩌면 파생 된 클래스가 더 잘할 수 있습니다. –

+0

우리 자신의 생성기가 있기 전에는 실제로 datacontext를 추상화 한 다음 파생 된 기본 클래스를 사용했습니다. 기억에서 나는 이것이 수업에서는 불가능하다고 믿습니다. 가능하면 옵션이 될 것입니다. 그러나 사실 내 답변에 설명 된 해결책과 동일합니다. – Florian