1

.엔티티 프레임 워크 4.1 : 내 데이터베이스 테이블 <em>(AccessControl입니다) <em>고객</em>과 다른 테이블 테이블에 포함 된 정보에 대한 사용자 "액세스 제어 목록"의 종류를 설명</em>에있는 아주 특별한 관계

예 : 엔터티 엔터티는 엔터티 # 1로 표시됩니다. 사용자가 부서 # 6에 속하는 경우, 그는 고객 # 16, # 31의 기록에 액세스 할 수 있지만 그는 # 14, 그 캔 부서 # 3에서 사용자가 볼 수 없습니다 여기

Table ACCESSCONTROL: 

    EntityId PrimaryKey DepartmentId 
    1  16  6 
    1  31  6 
    1  14  3 

내가 도메인에 사용하고있는 클래스의 예 :

Public Class Customer 
    Public Property Id As Integer 
    ....... 
    Public Overridable Property Acl As ICollection(Of AccessControl) 
End Class 

Public Class AccessControl 
    Public Property EntityId As Integer 
    Public Property PrimaryKey As Integer 
    Public Property DepartmentId As Integer 
End Class 

어떻게 유창 코드 첫 번째 접근 방식을 사용하여 DbContext 정의에이 관계를 설명 할 수 있습니까? 미리 감사드립니다.

+0

데이터베이스에 외래 키는 어떻게 정의되어 있습니까? 힌트 : EF는 데이터베이스와 동일한 규칙을 사용합니다 (고유 키는 지원하지 않습니다). –

+0

안녕하세요, 데이터베이스에서 도메인 및 DbContext의 엔티티로 포함되지 않은 Departments 테이블의 DepartmentId 필드에 대한 외래 키 관계 만 정의했습니다! AccessControl 테이블은 EntityId 필드로 표시된 여러 엔티티에 속한 레코드에 대한 규칙을 포함 할 수 있으므로 다른 엔티티와 강력한 관계가 없습니다! AccessControl의 세 필드는 모두 테이블의 기본 키를 나타냅니다. – yeswest72

+0

'PrimaryKey' 열은 가상 관계를 만들기 위해 여러 엔티티 ('EntityId'가 다른 값을 가졌 으면)가 공유합니까? –

답변

1

문제를 올바르게 이해하면 EF에서이 관계를 설정할 수 없습니다. 그것이 작동하지 않는 많은 이유가 있지만 기본은 : 당신이 DB에서이 관계를 설정할 수 없다면 EF에서도 그것을 설정할 수 없다. 관계는 데이터 기반이며 EF는 데이터 기반 매핑 (예 : TPH 상속)에 대한 지원이 매우 제한되어 있습니다.

+0

감사합니다. 나는이 대답을 기대했습니다! – yeswest72